使用webpack,我可以把Node.js和浏览器代码放在同一个文件中,但防止Node.js代码进入浏览器吗?
With webpack, can I put Node.js and browser code in the same file, but prevent the Node.js code making it to the browser?
我有一个文件,我想有Node.js和浏览器代码。
Node.js代码不应该在浏览器中可见。
webpack可以根据环境从文件中排除代码吗?
有点像C语言的预处理指令。#if #else, etc
.
我知道Webpack解析代码相当密集,这使我认为它可以。
-
Node.js代码无法进入浏览器,因为它可能包含敏感的配置选项。
-
我希望浏览器和节点代码在同一个文件。我知道我可以使用
webpack.IgnorePlugin
来忽略文件基础上的要求,或者将共享代码放在浏览器文件中,并要求从服务器(我现在正在做),但我想知道是否有可能在同一文件中并排放置代码。
编辑:这是我正在尝试做的一个例子。
export class FooPlugin {
$name = 'foo-plugin'
register(app) {
const app = koa()
app.get('/foo', () => { this.send('foo') })
app.set('SECRET STUFF!')
app.start()
this.shared()
}
shared(app) {
// browser things - isomorphic react router routes, etc.
}
registerBrowser(app) {
this.shared()
}
}
// This is called in another file depending on the environment.
if (!isBrowser) {
(new FooPlugin).register(app)
} else {
(new FooPlugin).registerBrowser(app)
}
你可以使用Define Plugin来设置NODE_ENV
和gate你的代码:
var define = new webpack.DefinePlugin({'process.env': {NODE_ENV: JSON.stringify('production')}})
DefinePlugin
将用提供的字符串替换代码中的process.env.NODE_ENV
实例,因此您最终将在编译的代码中得到类似if ('production' !== 'production')
的东西。当您进行生产构建时,Webpack运行带有死代码消除的uglify
,它将剥离这些不可访问的块。(见webpack howto: feature flags)
这就是React(和许多其他库)在投入生产之前剥离开发代码的方式。
相关文章:
- jquery代码在Mozilla中有效,但在其他浏览器上无效
- 如何将javascript事件从web浏览器wpf控件发送到wpf的c#代码
- 如何使用手机浏览器上的按钮拨打USSD代码
- JavaScript代码,用于在浏览器中显示字节数组中的PDF文件(非base64编码)
- 检查浏览器'在asp.net的后端代码中启用或禁用了s JS
- 如何修复在浏览器中打开后出现在屏幕上的html/Javascript代码
- 使用现有代码更改基于浏览器宽度的图像url
- 如何在jQuery.CSS()方法中为所有浏览器编写CSS代码
- 无法使用firefox在浏览器中运行此代码
- 安卓版本的代码不像桌面互联网浏览器那样工作
- 链接适用于所有浏览器,除了 safari(php 代码)
- 根据浏览器屏幕大小和媒体查询执行 php 代码
- 使用Safari浏览器调试Firebreath代码
- 为什么浏览器上的后退按钮会破坏此代码?它的作用与此相反
- 是否可以向用户发送javascript代码's浏览器安全
- 浏览器中未运行Javascript代码
- 这个AngularJs代码有什么问题-在浏览器代码编辑器- Nodejs中
- 使用webpack,我可以把Node.js和浏览器代码放在同一个文件中,但防止Node.js代码进入浏览器吗?
- 代理连接到XML跨服务器.使用Ajax可以在某些浏览器上工作,而不是其他浏览器?代码包括在内
- node.js和浏览器代码重用:将常量导入模块