相关疑难解决方法(0)

如何使用RequireJS实现延迟加载?

我们正在使用Backbone,RequireJS和Handlebars构建一个非繁琐的Web应用程序,好吧,我只是很好奇.目前,我们的每个型号排序如下:

define(['Backbone', 'js/thing/a', 'js/thing/b', 'js/lib/bob'], function(a, b, bob) {
  return Backbone.Router.extend({
    // stuff here
  });
});
Run Code Online (Sandbox Code Playgroud)

其中thing/a,thing/b都有自己的依赖关系,例如Handlebars模板等.现在发生的是在我的main.js中,所有"顶级"路由器都被加载并初始化; 每个顶级路由器都有一组依赖项(模型,视图等),每个依赖项都有自己的依赖项(模板,帮助程序,工具等).基本上,一个大树结构.

这种情况下的问题是整个树在页面加载时被解析并加载.我不介意每个人,因为我们最终将通过优化器运行它并最终得到一个大的单个文件(将RequireJS简化为基本上模块化框架).但是,我很好奇你是否可以按需加载视图和模板等内容.

还有就是"简化CommonJS的包裹解释说:" 在这里,所以我试过了:

define(function(require) {
  Backbone = require('Backbone');
  return Backbone.Router.extend({
    doStuff: function() {
      var MyView = require('js/myView');
      new MyView().render();
    }
  });
});
Run Code Online (Sandbox Code Playgroud)

但是,看看Chrome的网络检查器,似乎RequireJS - 即使没有触发触发doStuff处理程序的路径 - 仍会加载myView依赖项.问题:

  • 这有可能吗?RequireJS中是否有黑色魔法,它们在require()没有实际触发doStuff路线的情况下寻找呼叫?
  • 这是理论上正确的"按需"方式,需要延迟加载RequireJS模块和资源吗?
  • 如果使用这种表示法,r.js优化器是否仍然像宣传的那样工作?

javascript requirejs backbone.js js-amd

61
推荐指数
1
解决办法
2万
查看次数

Node.js 需要将路径存储在变量中

我正在测试一些 nodejs 代码,这就是我的目录的样子:

-> source  //NODE PATH=./source ...
-> plugs
   -myPlug.js
   -test.js
Run Code Online (Sandbox Code Playgroud)

test.js我尝试这样要求myPlug.js

function(){
     var myRequiredPlug = require('./myPlug.js') //this works
}
Run Code Online (Sandbox Code Playgroud)

由于NODE PATHsource,我也尝试过:

function(){
     var myRequiredPlug = require('./../plugs/myPlug') //also works
}
Run Code Online (Sandbox Code Playgroud)

但是我每次都必须为我的应用程序需要一个不同的插件,所以我非常想以这种方式创建路径:

 function(nameOfPlug){  // nameOfPlug := myPlug
     var myPath = './../plugs/' + nameOfPlug;
     console.log(myPath === './../plugs/myPlug') // true, so same string
     var myRequiredPlug = require(myPath);  
}
Run Code Online (Sandbox Code Playgroud)

当我按照他的方式尝试时,出现错误: Error: Cannot find module './../plugs/myPlug'

我已经尝试过path.normalize,甚至用 加入路径path.join,但得到相同的结果。有任何想法吗?

更新:答案

这个答案可以使用RequireJS解决, …

javascript path require node.js

9
推荐指数
1
解决办法
8480
查看次数

Karma/Jasmine测试失败并显示错误:'未捕获错误:模块名称"simple_test.js"尚未加载上下文:_.使用require([])'

我正在使用Karma和Jasmine对我使用React构建的项目进行测试.当我尝试运行我的Karma测试时,我在控制台中收到此错误:

Running "karma:test" (karma) task
WARN `start` method is deprecated since 0.13. It will be removed in 0.14. Please use 
  server = new Server(config, [done])
  server.start()
instead.
07 09 2015 14:46:56.552:WARN [plugin]: Error during loading "karma-opera-launcher" plugin:
  ENOENT, no such file or directory './config/prefs.ini'
Hash: 8344a6c0a9b3c44a5636
Version: webpack 1.12.1
Time: 6ms
webpack: bundle is now VALID.
07 09 2015 14:46:56.685:INFO [karma]: Karma v0.13.9 server started at http://localhost:9876/
07 09 2015 14:46:56.689:INFO [launcher]: Starting browser Chrome
07 09 2015 14:46:56.700:INFO [launcher]: …
Run Code Online (Sandbox Code Playgroud)

require requirejs jasmine reactjs karma-jasmine

5
推荐指数
1
解决办法
942
查看次数