UDN-企业互联网技术人气社区

板块导航

浏览  : 889
回复  : 2

[原生js] main vs browser vs jsnext:main vs module

[复制链接]
独领风骚的头像 楼主
发表于 2017-2-4 10:37:51 | 显示全部楼层 |阅读模式
  这是几个在 JavaScript 模块系统中比较混乱的几个概念:
  1. - `main` 用来指向 commonjs 格式的入口文件
  2. - `browser` 在 require 逻辑中优先使用 `pkg.browser` 这个参数
复制代码

  例如:
  1. {
  2.   "main": "lib/index.js",
  3.   "browser": "lib/browser.js"
  4. }
复制代码

  在 bundler 针对不同环境(node 或 browser)编译的时候会有不同的优先级,`browser` 也可以只是替换部分 `require` 的模块:
  1. {
  2.   "main": "lib/index.js",
  3.   "browser": {
  4.     "lib/http.js": "lib/http-browser.js"
  5.   }
  6. }
复制代码

  正如这里只是替换了 `lib/http.js` 模块。
  1. - `module` & `jsnext:main`
复制代码

  这两个其实是一个东西,都是 ES modules 格式的入口文件, jsnext:main 已经被 module 取代 。

  值得一提的是 `jsnext:main` 被 `module` 取代的部分原因是前者具有误导性,一眼看上去会让你以为你可以不编译代码让用户自己编译你用到的 ES6/7 特性。然而并不是这样的,你应该发布编译后的代码但是保留 `export/import` 关键词交给 bundler 处理。

  ---

  Reference:


相关帖子

发表于 2017-2-4 10:38:21 | 显示全部楼层
js太强大了,好多工作前端都可以做了…
使用道具 举报

回复

发表于 2017-2-4 10:38:21 来自手机 | 显示全部楼层
路过 帮顶 嘿嘿
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部