gpt4 book ai didi

ruby-on-rails - 将 'material-ui' 与 React-rails gem 一起使用?

转载 作者:行者123 更新时间:2023-12-03 13:25:36 25 4
gpt4 key购买 nike

我想在我的Rails 4应用程序中使用material-ui组件库。我目前正在使用react-rails gem 将.jsx 编译添加到 Assets 管道中。我已经通过 gemfile 中的rails-assets 添加了material-ui,如下所示:

source 'https://rails-assets.org' do
gem 'rails-assets-material-ui'
end

我在 application.js 文件中需要该库,如下所示:

//= require material-ui

但是我不断收到错误“无法找到文件‘material-ui’”。如何将我的 Rails 应用程序中的material-ui 组件库与react-rails gem 一起使用?

最佳答案

好的,这就是我到目前为止所做的工作......

到我添加的gemfile:

gem 'react-rails'
gem "browserify-rails"

这为我们提供了 React 库、帮助程序和 jsx 编译,以及使用 require() 语法来要求 JS 中的模块的能力。 browserify-rails 还允许我们通过 package.json 文件在 Rails Assets 中引入 npm 模块。

我们可以通过此 package.json 文件将material-ui 库添加到我们的应用程序中...

"dependencies" : {
"browserify": "~> 10.2.4",
"browserify-incremental": "^3.0.1",
"material-ui": "0.13.1"
},

material ui 库使用 require 语法以正确的顺序将所有不同的 jsx 组件文件连接在一起,因此这就是我们需要使用 browserify-rails 的原因。

接下来,为了将我们的 React 代码放在一起,我在 asset/javascripts 中创建了一个名为/react... 的新目录

react
L /components
L react.js
L react-libraries.js
L theme.js

现在,作为“material-ui”依赖项的一部分,我们有了 React 库。这意味着目前我们有该库的两个副本。一个来自“react-rails”gem,一个来自“browserify-rails”的“material-ui”库依赖项。让我们使用“material-ui”依赖项中的一个,并保留“react-rails”中的一个。

在react.js中:

//= require ./react-libraries
//= require react_ujs
//= require_tree ./components

然后在react-libraries.js中

//React Library
React = require('react');
//Material Design Library
MaterialUi = require('material-ui/lib');
injectTapEventPlugin = require('react-tap-event-plugin'); injectTapEventPlugin();
//Material Design Library Custom Theme
MyRawTheme = require('./theme');
ThemeManager = require('material-ui/lib/styles/theme-manager');

然后我们希望将所有这些都包含在 Assets 管道中......

//= require react/react

在 application.js 中。

现在您可以在/react/components/中的 jsx 文件中编写组件您可能还想为您的组件命名空间...

//Custom Components Namespace
Components = {};

在react-libraries.js中

您可以像这样在 theme.js 中自定义主题...

Colors = require('material-ui/lib/styles/colors');
ColorManipulator = require('material-ui/lib/utils/color-manipulator');
Spacing = require('material-ui/lib/styles/spacing');

module.exports = {
spacing: Spacing,
fontFamily: 'Roboto, sans-serif',
palette: {
primary1Color: Colors.grey300,
primary2Color: Colors.grey300,
primary3Color: Colors.lightBlack,
accent1Color: '#01A9F4',
accent2Color: Colors.grey100,
accent3Color: Colors.grey500,
textColor: Colors.darkBlack,
alternateTextColor: Colors.white,
canvasColor: Colors.white,
borderColor: Colors.grey300,
disabledColor: ColorManipulator.fade(Colors.darkBlack, 0.3)
}
};

希望有帮助:)

关于ruby-on-rails - 将 'material-ui' 与 React-rails gem 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33446248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com