编写与客户端javascript和服务器端NodeJs模块一起工作的javascript代码
Write javascript code that works with client side javascript and server side NodeJs modules
Browserify和lo-dash,做一些特别的事情。好的,但应该是免费的,从其他供应商库或nodejs模块。我想编写可重用的代码。所以,…
我可以写一些javascript代码。此外,我可以写NodeJs代码。Ok:我可以为NodeJs编写一个模块,用于服务器端代码,但在某些时候,我需要编写一个NodeJs代码来导出,例如,一个模块。var MyModule = function () {
this.attribute = 666
}
module.exports = MyModule
,但……它是一个NodeJs模块。如果我尝试将它包含在客户端页面…
<script src="lib/myModule.js">
我会得到'Uncaught ReferenceError: module is not defined'。为什么?也许吧,因为它是NodeJs代码,而不是Javascript。好吧,但是……这是与NodeJs在客户端和服务器端共享相同代码的最佳实践。我可以共享一个javascript文件,并在两边使用它。我怎么能写一个模块,与javascript代码工作,我想在客户端也使用?
我要找的是:
写一些javascript代码。 my_public_file . js:console.log('I am a javascript snippet')
然后,我想写一个模块,与相同的代码工作。 my_module . js
var lib_public_code = require('some/public/path/my_public_file.js')
var MyModule = function () {
this.attribute = 666
}
module.exports = MyModule
和,也,我想写一个公共网页(index.html),工作与相同的代码
<script src="javascript/my_public_file.js">
最佳实践?我疯了?
要使其在客户端和服务器端都工作,只需在module.exports
存在时导出它:
var MyModule = function () {
this.attribute = 666;
};
if (typeof module !== "undefined" && module.exports) {
module.exports = MyModule;
}
这个和类似的方法被许多库用来使包能够在CommonJS和浏览器上使用(例如:jQuery)
你安装了browserify
$ npm install -g browserify
你把你的my_public_file.js任何节点代码等
var lib_public_code = require('some_file.js')
var MyModule = function () {
this.attribute = 666
}
module.exports = MyModule
你运行魔法
$ browserify my_public_file.js -o bundled_public.js
然后它在浏览器中工作,所需的文件都在那里。
<script src="bundled_public.js">
在客户端和node.js上都使用require.js。已经完成了几个在客户端和服务器端之间共享代码的应用程序
编写一个可重用的javascript模块。我将使用下面的代码,它将与浏览器,nodejs和requirejs一起工作。
(function(root, factory) {
if (typeof module !== 'undefined' && typeof exports === 'object') {
module.exports = factory();
} else if (typeof define === 'function' && define.amd) {
define([], factory);
} else {
root.myModule = factory();
}
}(this, function() {
var myModule = {};
myModule.publicMethod = function() {};
return myModule;
}));
factory
函数正在被调用,我们可以将其赋值给相关的里面的环境。在nodeJs中,export.modules = factory();
。在requireJs,define([], factory);
。在浏览器中,root.myModule = factory();
,因为root === window
,我们可以使用myModule
作为全局变量
- 如何将索引数据库与 Metrostyle Javascript 一起使用
- 如何将html中select选项的输入与javascript一起使用
- 与javascript一起使用RequiredFieldValidator
- 如何用JavaScript中的Ajax调用代替加载脚本文件(将YQL与JavaScript一起使用)
- 防止将IE8与JAVASCRIPT一起使用
- CSS 缩放在起点和终点之间与 javascript 一起使用
- PHP和Javascript一起工作
- 如何将CSS与javascript一起使用
- 如何将 django-comments 表单与 javascript 一起使用
- 未能将加速度计与 HTML 和 JavaScript 一起使用
- 如何将PostgreSQL与JavaScript一起使用
- 在选择列表中将创建的属性与 javascript 一起使用
- HTML 不能与 JavaScript 一起使用
- 如何将“display:none”与jquery或javascript一起使用
- 如何将pubnub密钥与Corona和Javascript一起使用
- HTML5与javascript一起解析和显示文本文件
- 如何将css代码存储在与Javascript一起使用的php变量中
- 将可变thisarg或上下文与javascript一起使用有什么危险
- Html生成的JavaScript无法与其他JavaScript一起使用
- 与外部javascript一起传递的php脚本不起作用