sen*_*rio 3 javascript node.js express
Browserify和lo-dash,做一些特别的事情.好的,但是想要从其他供应商库或nodejs模块中解脱出来.我想写可重用的代码.所以......
我可以写一些javascript代码.另外,我可以编写NodeJs代码.好的:我可以为NodeJ编写一个模块,用于服务器端代码,但在某些时候我需要编写一个NodeJs代码来导出,例如,一个模块.
var MyModule = function () {
this.attribute = 666
}
module.exports = MyModule
Run Code Online (Sandbox Code Playgroud)
但是,......这是一个NodeJs模块.如果我尝试将其包含在客户端页面中...
<script src="lib/myModule.js">
Run Code Online (Sandbox Code Playgroud)
我会得到'Uncaught ReferenceError:模块未定义'.为什么?也许,因为它是NodeJs代码,而不是Javascript.好的但是,...最好的做法是在NodeJs的客户端和服务器端共享相同的代码.好的,我可以共享一个javascript文件,并在双方使用它.如何编写一个与javascript代码一起使用的模块,我想在客户端使用?
我在寻找的是:
写一些javascript代码.my_public_file .js:
console.log('I am a javascript snippet')
Run Code Online (Sandbox Code Playgroud)
然后,我想编写一个使用相同代码的模块.my_module .js
var lib_public_code = require('some/public/path/my_public_file.js')
var MyModule = function () {
this.attribute = 666
}
module.exports = MyModule
Run Code Online (Sandbox Code Playgroud)
此外,我还想编写一个使用相同代码的公共网页(index.html)
<script src="javascript/my_public_file.js">
Run Code Online (Sandbox Code Playgroud)
最佳做法?我疯了吗?
要使它在客户端和服务器端都能工作,只需将其导出(如果module.exports存在):
var MyModule = function () {
this.attribute = 666;
};
if (typeof module !== "undefined" && module.exports) {
module.exports = MyModule;
}
Run Code Online (Sandbox Code Playgroud)
许多库使用这种和类似的方式来使包在CommonJS和浏览器上使用(例如:jQuery)
| 归档时间: |
|
| 查看次数: |
2435 次 |
| 最近记录: |