我想使用browserify和hbsfy Handlebars转换来模拟我正在编写的Web应用程序中的JavaScript。
使用gulp,我设置了运行browserify和hbsfy的任务,使用对我的模块进行分组的源结构将几个js和hbs文件编译成一个:
/src
- /javascript
- app.js
- /module-one
- module-one.js
- module-one.hbs
- /moduleTwo
- module-two.js
- module-two.hbs
然而,当从另一个模块引用一个模块时,这是有问题的 - 需要使用脆弱的相对路径,如果模块被移动或进一步嵌套则需要更新。
substack在他的(伟大的)浏览器手册中写了Avoiding ../../../../../../..。在那里,他建议将应用模块存储在node_modules
下的目录中。
很高兴我开始着手这样做,但很快遇到了hbsfy不再编译模板的问题。根据{{3}},browserify将只转换顶级文件,并且只有在global
选项设置为true
时才会转换node_modules中的文件。
这解决了我的问题,但文档指出:
从大多数时间开始,谨慎而谨慎地使用全局变换 普通的变换就足够了。
我不相信我的用例很不寻常 - 我应该以不同的方式存储我的模块吗?或者我错过了一块拼图?
答案 0 :(得分:0)
我在hbsfy中找到了一个简单的例子,它可能对你有用https://github.com/epeli/node-hbsfy/blob/master/example/index.js
这取决于你正在看的框架是什么,如果你正在做angularjs,你可以在https://github.com/mallim/sbangular/blob/master/src/main/resources/js/login/LoginCtrl.js
中看到一个例子在这种情况下,具体代码如下:
app.run(['$templateCache', function($templateCache) {
$templateCache.put('login.html', require('./login.html') );
}]);
login.html实际上与LoginCtrl.js在同一个文件夹中