【发布时间】:2015-07-30 13:19:09
【问题描述】:
我有一个文件想要同时包含 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)
}
【问题讨论】:
标签: javascript node.js webpack isomorphic-javascript