【问题标题】:React.js server-side rendering with moment.js dependencyReact.js 服务器端渲染与 moment.js 依赖
【发布时间】:2015-01-19 17:11:44
【问题描述】:

我正在使用react-rails gem,并按照自述文件中提供的说明将其配置为在服务器端正确呈现,即:

# Gemfile    
gem "therubyracer", platforms: :ruby

我的看法:

# show.html.erb
<%= react_component('BlahApp', { something: @user.something, stuff: @user.stuff }, { prerender: true }) %>

我确实有一个组件通过 momentjs-rails gem 大量使用 moment.js,但我似乎无法让服务器端渲染来处理它:

Encountered error "ReferenceError: moment is not defined" 

moment.js 已被 Sprockets 正确包含在资产管道中,但我怀疑这不会发生在服务器端。

使用 React 包含用于服务器端渲染的额外 JS 库的正确方法是什么,无论是通过这些 gem 还是一般方式?

【问题讨论】:

    标签: ruby-on-rails reactjs momentjs


    【解决方案1】:

    您尚未提供任何代码示例,您现在是如何设置它的,但根据您的描述,最好的方法是在后端和前端都使用 require()

    require() 在 node.js 上开箱即用。要在浏览器中实现相同的效果,您可以使用browserify

    【讨论】:

    • 我已经更新了代码。所以看起来我需要 Browersify 来让额外的东西在服务器端渲染上得到正确处理。将尝试并报告!
    • 是的,如果您使用 CoffeeScript 和/或 JSX 编写代码,还可以查看其他插件,例如 coffeeify、reactify。