如何在浏览器中创建npm模块

时间:2017-01-31 16:37:08

标签: node.js npm

我制作了一个npm模块,它在节点中运行得很好,但是我也希望能像Socket.io一样在浏览器中使用它。在节点I中使用它:var AIM = require('aimjs')(server)

服务器参数是可选的,来自http.Server(Node.js doc),如果指定它作为Socket.io执行模块的客户端版本:

if (this.server != null) {
    var listeners = this.server.listeners('request').slice()
    this.server.removeAllListeners('request')
    this.server.on('request', function (req, res) {
        if (url.parse(req.url).pathname === '/AIM.js') {
            res.setHeader('Content-Type', 'application/javascript')
          res.writeHead(200)
          res.end(fs.readFileSync(__dirname + '/AIM.client.js'))
        } else {
            for (var i = 0; i < listeners.length; i++) {
        listeners[i].call(self.srv, req, res)
      }
    }
  })
}

此文件(AIM.client.js)是我的main的浏览器版本,但该模块不在外面。我怎样才能让它全球化?我希望用户只需要安装模块,包括<script type='text/javascript' src='/AIM.js'></script>,并且可以在客户端和服务器端使用它。

1 个答案:

答案 0 :(得分:0)

浏览文件时,请使用--standalone-s)选项。

示例:

browserify index.js -s aimjs

这将使您的文件成为UMD包。

  • 如果它在CommonJS环境中使用,它将表现为CommonJS模块。
  • 如果它在AMD环境中使用,它将表现为AMD模块。
  • 如果只是通过脚本标记包含它,它会将自身附加到window.aimjs