javascript - browserify - 排除代码块?

标签 javascript node.js reactjs browserify

我正在构建一个在浏览器和服务器端 Node 中使用共享 React 组件的应用。

现在,我正在使用 Marty.js 来执行此操作:

function getUser() {
    if (Marty.isBrowser) {
        /* Get user using some client method */  
    } else {
        /* otherwise, use some secret server code */
    }
}

我通过 Browserify 将这些功能捆绑在一起,因此它们可以在客户端和服务器上运行。

我想做的是从包中完全删除 else block ,这样我就不会泄露敏感的服务器端代码。

有没有办法从包中排除代码块?

最佳答案

我会创建单独的模块,一个用于浏览器,一个用于服务器。然后在你的 package.json 中,你告诉 browserify 使用浏览器模块:

"browser": {
    "./path/to/node-module.js": "./path/to/browser-module.js"
}

现在,无论您在哪里调用 require('path/to/node-module'),browserify 都会加载另一个模块。


更多信息来自 docs :

browser field

There is a special "browser" field you can set in your package.json on a per-module basis to override file resolution for browser-specific versions of files.

For example, if you want to have a browser-specific module entry point for your "main" field you can just set the "browser" field to a string:

"browser": "./browser.js"

or you can have overrides on a per-file basis:

"browser": {
  "fs": "level-fs",
  "./lib/ops.js": "./browser/opts.js"
}

Note that the browser field only applies to files in the local module, and like transforms, it doesn't apply into node_modules directories.

关于javascript - browserify - 排除代码块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30442220/

相关文章:

javascript - 如何在 React JS 中为文本设置颜色

javascript - jQuery 闭包 : How to get a value from a function click

javascript - Mongodb连接服务器失败错误

javascript - 如何使用传递给 reducer 的事件对象验证 reducer 内的单选按钮?

javascript - react 常量改变值?

node.js - Node8/Expresss 4 如何获取特定响应头属性的值?

javascript - 表格列宽度匹配

javascript - 使用 jQuery 分解表单?

javascript - 如何使用 iframe 中的函数从父页面中删除 iframe?

node.js - 使用 Node.js 从 couchdb 中检索所有文档