如何在节点模块和浏览器环境之间共享类开发

How to share a class development between node module and browser environment

本文关键字:之间 环境 共享 开发 浏览器 节点 模块      更新时间:2023-09-26

我为node.js:开发了这段代码

user.js:

var Underscore = require( '/usr/local/lib/node_modules/underscore' ),
    Backbone = require( '/usr/local/lib/node_modules/backbone' );
var User = Backbone.Model.extend( {
   // Handle calls to Mysql 
});
module.exports = User;

我为浏览器开发了以下代码:

user.js:

define( function( require ) {
    var Backbone = require( "backbone" );
    var User = Backbone.Model.extend( {
    } );
    return lUser;
} );

是否可以为两个环境共享一个用户实现文件?

是的,你可以这样做。这是一个有点棘手的问题,有几种不同的尝试来解决它

  • 以node.js风格的CommonJS模块的形式专门编写所有内容
    • 这意味着使用requiremodule.exports,但不使用define,不使用包装函数等
  • 使用browserfy打包一束代码并将其发送到浏览器
  • 只要npm中的包可用(主干、下划线等),就使用它们,否则就使用browserfy对非npm库的支持来根据需要填充内容(angularjs等)

使用可用的在线教程。掌握窍门需要一些努力,但一旦你完成了学习曲线,你就能够非常有效地共享和重用代码。

请注意上面的代码片段:当模块在npm中可用时,请按名称要求模块,或者在需要时按相对路径要求模块,但千万不要像上面那样使用绝对路径。