将“material-ui”与react-rails gem 一起使用?

2023-11-25

我想在我的 Rails 4 应用程序中使用material-ui 组件库。我目前正在使用react-rails gem 将.jsx 编译添加到资产管道中。我已经通过 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 资产中引入 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');

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

//= 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)
  }
};

希望有帮助:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将“material-ui”与react-rails gem 一起使用? 的相关文章

随机推荐

  • SBT中项目间如何共享资源

    我正在工作的项目是一个网络应用程序Lift框架 我们正在使用xsbt 网络插件以及 有一个 核心 项目 其中包含绝大多数功能 我当前的目标是创建两个 分发 项目 将一组不同的类路径资源添加到 核心 项目 问题是我要么 1 无法运行 分发 项
  • 如何在 Visual Studio 中设置条件断点?

    有没有一种简单的方法可以在 Visual Studio 中设置条件断点 如果我只想当变量的值变为某值时才命中断点 我该怎么做 像往常一样设置断点 右键单击它 单击条件
  • UITableViewcornerRadius 在 iOS 上存在边框性能问题

    我有一些关于滚动性能的有趣通知UITableView with cornerRadius borderWidth and borderColor已启用 self tableView layer cornerRadius 10 f self
  • 如何在 Chrome 浏览器的 selenium Webdriver 中设置代理身份验证

    我正在尝试自动化 Web 应用程序 selenium 2 0 webdriver java Web 应用程序当前部署在本地网络上的 UAT 服务器中 我的测试用例正在执行 但我必须手动输入我的代理身份验证详细信息测试执行开始时的 Chrom
  • 在属性文件中逐行添加注释

    这是我想在属性文件中做的事情 Comments about key Value pair 1 Key 1 value 1 Comments about key Value pair 2 Key 2 value 2 Comments abou
  • 数据框的粘贴方法

    我想将数据框输入到粘贴中 并且希望粘贴将其视为我已单独输入该数据框的列 我想这样做的原因是因为我不确定我的数据框将有多少列 这里有 2 个 但我想要一个通用的解决方案来处理任意数量的列 我想要的输出是test1paste在下面的代码中 但我
  • 如果值小于零则返回零[重复]

    这个问题在这里已经有答案了 如果值小于零而不使用 case 语句 是否可以返回零 例如Max a 0 我希望我的代码尽可能简洁 只是为了好玩 DECLARE a INT 3 SELECT COALESCE NULLIF ABS a a 0
  • 执行动态交叉表查询

    我在 Postgres 数据库中实现了这个函数 http www cureffi org 2013 03 19 automatically creating pivot table column names in postgresql 这是
  • .app 文件在 Xcode 4 的新项目中显示为红色(丢失)

    每次我创建 Xcode 4 项目 iPhone 应用程序 cocoa 库 时 产品组下的 app 文件或 a 文件都会显示为红色 丢失 即使我构建了项目 文件仍然是红色的 我的所有设置都是默认的 尝试在设备上构建并运行 我注意到同样的红色文
  • 如何使用 Spring Security 登录页面传递附加参数

    我正在尝试将数据库名称设置为 Spring Security 登录页面的请求输入参数 目前我只获取使用 spring security 检索的用户名SecurityContextHolder getContext getAuthentica
  • 将值映射到色标

    我有一个值列表 应将其绘制到具有特定颜色的地图上 地图的绘制已经完成 但我需要找到一种方法来映射值n代表其价值的颜色 到目前为止 我的一个例子和解决方案是根据min and max然后将它们分配给十六进制颜色0对于最低的和255为最高 这当
  • 我可以根据另一个单元格的状态显示/隐藏 UITableView 中的某个单元格吗?

    我有一个样式为 Grouped 的 UITableView 我用它来在我的应用程序中设置一些选项 我希望此 UITableView 的一个单元格仅根据此 UITableView 的另一个单元格是否激活而显示 如果不是 第一个单元格应该显示
  • 如何更改格式化日期的区域设置?

    我想以特定格式和英文月份名称检索今天的日期 我在用着Format DateValue Now dd mmm yyyy 这给了我05 cze 2013 这是波兰语 我想要得到的是05 Jan 2013 我只对 VBA 解决方案感兴趣 另请提供
  • 忽略 NSURLErrorDomain 错误 -999 在 UIWebView 中不起作用

    我试图避免出现的问题UIWebView的委托返回这样的错误 我在委托实现中有常见的解决方法 我在互联网上的任何地方都看到过 void webView UIWebView webView didFailLoadWithError NSErro
  • 未启用 CarMode 的 Android 夜间模式

    所以我为夜间模式制作了单独的 xml 并将它们保存在layout night 然后我切换到夜间模式 UiModeManager uiManager UiModeManager getSystemService Context UI MODE
  • 是否有一个 Java 库可以“比较”两个对象?

    是否有一个类似于 Unix 程序 diff 的 Java 实用程序库 但是针对对象 我正在寻找可以比较相同类型的两个对象并生成表示它们之间差异的数据结构 并且可以递归比较实例变量中的差异 的东西 我是not寻找文本差异的 Java 实现 我
  • 为什么 gcc 自动矢量化不适用于大于 3x3 的卷积矩阵?

    我已经为卷积矩阵实现了以下程序 include
  • GZipStream 和 DeflateStream 生成更大的文件

    我正在尝试在 C 中使用 deflate gzip 流 但压缩后的文件似乎比以前更大 例如 我压缩了 900ko 的 docx 文件 但它生成了 1 4Mo 的文件 它对我尝试过的每个文件都执行此操作 也许我的做法是错误的 这是我的代码 F
  • 从纵向数据中选择最后一个观察值

    我有一个数据集 其中包含每个参与者的多次时间评估 我想为每个参与者选择最后一次评估 我的数据集如下所示 ID week outcome 1 2 14 1 4 28 1 6 42 4 2 14 4 6 46 4 9 64 4 9 71 4 1
  • 将“material-ui”与react-rails gem 一起使用?

    我想在我的 Rails 4 应用程序中使用material ui 组件库 我目前正在使用react rails gem 将 jsx 编译添加到资产管道中 我已经通过 gemfile 中的rails assets 添加了material ui