我正在寻找一种将 TimelineJS 与 RequireJS 的 AMD 实现结合使用的方法。我可以让事情部分工作,例如
define(["storyjs", "timelinejs", ...], function(storyjs, timelinejs, ...) {
createStoryJS({
type: 'timeline',
width: '800',
height: '600',
source: { ... }, // sample JSON
embed_id: 'timeline-embed'
});
});
Run Code Online (Sandbox Code Playgroud)
上面生成了一个时间线,但是storyjs(在我的 RequireJS 配置中导出VMM)总是尝试执行自己的 TimelineJS 库加载,这总是会在 Firebug/开发人员工具控制台中产生错误。
我要么寻找一种以编程方式构建 TimelineJS 对象的方法(我找不到任何示例),要么告诉 StoryJS 不要使用其机制加载库(因为我已经提供了它们),并且通常集成 TimelineJS使用 AMD 解决方案。
有什么建议么?
更新:
使用的 RequireJS 配置如下。为了我个人的使用,我倾向于重命名 JS 库并附加它们的版本号。
var require = {
waitSeconds: 5,
paths: {
"app": "../js/app"
// ** Libraries
,"backbone": "../js/lib/backbone-1.1.0.min"
,"bootstrap": "../js/lib/bootstrap-3.0.2.min"
,"jquery": "../js/lib/jquery-1.10.2.min"
,"jquery-ui": "../js/lib/jquery-ui-1.10.3.min"
,"json2": "../js/lib/json2" …Run Code Online (Sandbox Code Playgroud) Netsuite 说在创建自定义模块时包含模块 ID,如下所示:
define(module_id, [dependencies], function)
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,找不到模块:
TypeError: Cannot read property "XPELPCenterModule" from undefined (/path/to/mysuitelet.js#35)
Run Code Online (Sandbox Code Playgroud)
当我删除ID时,它起作用了???
Hello Human Coder
Run Code Online (Sandbox Code Playgroud)
我错过了什么。我用同样的方式称呼他们两个
function (ui, email, runtime, search, record, log, render, cache, crypto, file, pcenter) {
var p = new pcenter.XPELPCenterModule();
Run Code Online (Sandbox Code Playgroud)
.....
p.helloWorld('Human Coder');
Run Code Online (Sandbox Code Playgroud)
以下是模块代码示例:
define(["require", "exports"],
function (require, exports) {
var XPELPCenterModule = /** @class */ (function () {
function XPELPCenterModule(name) {
this.name = name;
}
XPELPCenterModule.prototype.helloWorld = function (name) {
return 'Hello ' + name;
};
return XPELPCenterModule;
}());
exports.XPELPCenterModule …Run Code Online (Sandbox Code Playgroud) 下面的代码是从 UI5 Demo Kit 复制的,但是当我运行它时,控制台显示该函数Fragment.load不是函数的错误消息。请提出任何替代方案或突出问题(如果有)。
sap.ui.define([
"sap/ui/core/mvc/Controller",
"sap/m/MessageToast",
"sap/ui/model/Filter",
"sap/ui/model/FilterOperator",
"sap/ui/model/json/JSONModel",
"sap/m/MessageToast",
"sap/ui/core/Fragment"
], function(Controller, MessageToast, Filter, FilterOperator, JSONModel, Fragment) {
"use strict";
return Controller.extend("Workspace.controller.HelloPanel", {
onInit: function() {
var plant = {
pid: "",
ptype: "",
pdesc: "",
psite: "",
pstatus: "",
passigned: "",
pattach: ""
};
var oModel1 = new JSONModel(plant);
this.getView().setModel(oModel1, "SUP");
},
onOpenDialog: function() {
var oView = this.getView();
if (!this.byId("helloDialog")) {
Fragment.load({
id: oView.getId(),
name: "Workspace.view.HelloDialog",
controller: this
}).then(function(oDialog) {
// connect dialog …Run Code Online (Sandbox Code Playgroud) 我尝试将Breeze与:TypeScript,AMD模块,requirejs,knockout一起使用.
看看Breeze代码,我可以看到它需要通过名称"ko"进行淘汰.但是,还有其他组件需要通过名称"knockout"进行淘汰.
因此,如果我使用路径"knockout"创建requirejs的配置,加载器将抱怨"ko"尚未加载.如果我手动更改Breeze代码,将"ko"替换为"knockout",一切正常.
可以做什么,所以不需要更改Breeze代码?
我知道关于这个话题已经有一些类似的问题,但不知怎的,它们都没有帮助.我想在使用requirejs和Typescript的项目中使用angular.js.
我有一个模块,我使用angular来创建一个服务模块:
/// <reference path="../../../typings/angularjs/angular.d.ts" />
...
var services = angular.module('services', []);
...
export = services;
Run Code Online (Sandbox Code Playgroud)
这段代码编译时没有错误,但是在创建的js文件中,还没有angular.js依赖项:
define(["require", "exports"], function(require, exports) {
...
}
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序时,浏览器会抱怨:未捕获的ReferenceError:未定义angular
我的猜测是,除了引用它之外我还应该导入角度,但是我试过的路径都没有.
这是我的require.js配置,以防需要:
require.config({
paths: {
angular: '../lib/angular/angular',
...
},
shim: {
angular : {exports : 'angular'},
...
}
)}
Run Code Online (Sandbox Code Playgroud)
你可以帮助我,这里缺少什么?谢谢.
我在通过 require.js 加载某些 .js 模块时发现了一些问题 问题是:我只需要加载某些页面中的某些模块,而不是整个网站。因此,我以这种方式放置代码:
if($('.module-news').length > 0 + $('.module-ticket-euromillones-multiple').length + $('.module-news-page').length > 0) {
require('_modules/news-grid').init();
}
Run Code Online (Sandbox Code Playgroud)
如果class="module-news"存在(新闻页面),则此代码在 HTML 中搜索。如果是这样,则使用 javascript 加载模块。
那是行不通的。IF 评估正确,但无论 .module-news 是否存在,模块news-grid总是在加载。
我发现如果我更改变量的模块路径字符串,则 requires 行为正确,但这没有意义。这如何,以下代码有效:
var name = "_modules/news-grid";
if($('.module-news').length > 0 + $('.module-ticket-euromillones-multiple').length + $('.module-news-page').length > 0) {
require(name).init();
}
Run Code Online (Sandbox Code Playgroud)
这是需要的已知问题吗?我错过了什么吗?(也许在 requirejs.config 设置中?
帮助表示赞赏
在这个简单的Require/Backbone应用程序中
https://github.com/thisishardcoded/require-prob
为什么app.js看到路由器而不是TestView.js?
这是app.js的第一行
define(['router'],function (Router) {
Run Code Online (Sandbox Code Playgroud)
这是TestView.js的第一行
define(['backbone','router'],function(Backbone,Router){
Run Code Online (Sandbox Code Playgroud)
如果你有这种倾向,请查看repo以获取完整的详细信息,下载,运行并检查控制台日志
谢谢!吉姆
更多:好的,答案是 - 因为它的加载顺序,即使它被改变了,我有一个循环依赖不是吗?TestView需要路由器,路由器需要TestView.
在哪种情况下解决方案可能是
var r=require('router);
r.navigate or whatever
Run Code Online (Sandbox Code Playgroud)
但是,路由器到处都无法直接访问,这似乎是一种耻辱,无论如何,上述方法是不是很好的做法?
我需要使用requireJS将配置值传递到我的所有AMD模块中.
通过使用以下示例,我可以愉快地将配置值传递给特定模块; 如requireJS API配置模块文档中所述
requirejs.config({
config: {
'bar': {
raw: true
},
'baz': {
raw: true
},
...
}
});
Run Code Online (Sandbox Code Playgroud)
以上工作正常,但我有50个模块,我想传递相同的配置值,这些可能会增加或改变.我可以定义50个模块名称,如上所述,并传递值,但我真的不想按名称定义每个模块并维护该列表,而是我想做这样的事情.
requirejs.config({
config: {
'*': {
raw: true
}
}
});
Run Code Online (Sandbox Code Playgroud)
我已经尝试过以上但是没有用.
requireJS配置映射似乎支持"*"通配符,但我没有看到任何类似的"配置".我已经搜索过了,但我想我的搜索日期很糟糕.
所以,问题是:"config"是否有"*"通配符支持,我只是遇到了问题?或者还有其他方法可以实现这一目标吗?
可以说我有以下文件tests.ts:
module tests {
export class Greeter
{
sayHello() {
console.log("hello world");
}
}
}
Run Code Online (Sandbox Code Playgroud)
并将其编译为和AMD模块.我究竟如何在常规JavaScript(而不是typescript!)文件中创建Greeter的对象实例?
我想的是:
require(['tests', function(tests) {
var greeter = new tests.Greeter();
greeter.sayHello();
}
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用 - 调试器显示我测试__proto__但是我找不到其中的成员'Greeter'.
从这个网站阅读,我了解到使用 commonjs 意味着当浏览器完成下载文件时,它必须将它们一一加载,因为它们相互依赖。但是使用AMD,它可以同时加载多个文件,这样即使文件a依赖于文件b,文件a的一部分也可以在文件b完成之前执行?
CommonJS 模块:该标准的主要实现是在 Node.js 中(Node.js 模块有一些超出 CommonJS 的功能)。特点:语法紧凑,专为同步加载和服务器而设计
异步模块定义 (AMD):该标准最流行的实现是 RequireJS。特点:语法稍微复杂一些,使AMD能够在没有eval()(或编译步骤)的情况下工作专为异步加载和浏览器而设计
amd ×10
javascript ×7
requirejs ×7
typescript ×2
asynchronous ×1
backbone.js ×1
breeze ×1
commonjs ×1
jquery ×1
knockout.js ×1
netsuite ×1
node.js ×1
sapui5 ×1
suitescript ×1
timeline.js ×1