【问题标题】:Inject data in a Browserify app在 Browserify 应用程序中注入数据
【发布时间】:2014-08-12 16:22:35
【问题描述】:

这里有人知道如何将数据注入 Browserify 应用程序吗?

我的意思是,我使用 Browserify 创建一个大包 app.js 文件。

但是当我的单页应用程序启动时,服务器还会在加载应用程序的 HTML 页面中添加一些引导数据,这样应用程序就不必向服务器发出 ajax 请求来获取这些数据。

目前,服务器为启动应用程序渲染的 HTML 模板如下所示:

<script type="text/javascript" >
window.bootstrapData = @Html(utils.CustomSerializer.serialize(bootstrapData));
</script>

<script type="text/javascript" src="@{reactAppBaseUrl}/app.js"></script>

app.js(Browserified 单页应用程序)内部,我们使用 window.bootstrapData 来获取 Browserify 包中的数据。

有什么不涉及全局变量的优雅方法吗?

【问题讨论】:

  • 您可以创建一个函数,但那将只是一个全局函数。但是 FWIW,全局变量并不总是邪恶的。

标签: javascript browserify bootstrapping


【解决方案1】:

使用external require

捆绑应用时,使用 -r 选项启用特定服务的外部需求:

browserify -r appBootstrap  > app.js

然后,在您已导入捆绑包的下方的脚本标记中,请求服务并注入数据:

<script type="text/javascript" src="@{reactAppBaseUrl}/app.js"></script>

<script>
  var serializedData = @Html(utils.CustomSerializer.serialize(bootstrapData))
  require('appBootstrap').load(serializedData);
</script>

【讨论】:

  • 感谢它运行良好。但无法通过expose 选项使其工作,知道它是如何工作的吗?
  • 我能够让暴露选项在命令行和使用 API 的情况下工作,这里是 gist
  • 我只有在使用同名的暴露名称时才能工作(我的意思是使用 require app.js 和暴露 app,但使用 app 以外的其他字符串时出现错误,这似乎奇怪
  • 我使用的是browserify 6.3.2,也许你的旧版本有缺陷?
猜你喜欢
  • 2016-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多