热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

整合Meteor+React+MaterialUI

看了meteor官方教程,觉得这个做快速开发真的不错。于是尝试和react和material-ui进行整合。由于Meteor不是一个普通的nodeproject,对于npm模块的依

看了meteor官方教程,觉得这个做快速开发真的不错。于是尝试和react和material-ui进行整合。由于Meteor不是一个普通的node project,对于npm模块的依赖不能够简单的require()就搞定。这里主要参考这篇文章,但是material-ui版本已经更新到0.12.3,所以期间还是花了点时间。

以下,将会用到:

  1. create package in meteor

  2. add local package in meteor

  3. meteor中client端添加npm模块

如果是普通的node项目,整合React和Material-ui只需要npm install & require,但是meteor中却没有这么简单。

Google了一下meteor添加npm模块,发现meteor添加npm模块有几个方法:

  1. meterohacks:npm,用于server端

  2. cosmos:browserify,用于client端

我希望在client端做使用react,因此采用后者(还没有试过server端使用react)。大致思路是:新建一个package,里面使用cosmos:browserify添加对react和material-ui的依赖,在meteor项目中添加此package。
meteor add react可以快速的添加对react的支持,但是这样的方式在使用material-ui时会有些问题,具体在参考文中也有谈到。因此采用browserify添加react依赖。

创建meteor项目

meteor create meteor-react-material
cd meteor-react-material

添加meteor的package路径

export PACKAGE_DIRS=$HOME/meteor/local-packages

这里需要自己创建一个路径保存本地的meteor包,meteor add时会搜索这个路径去安装包。由于export仅仅对当前termial session生效,所以不用担心对其他项目bao的安装有影响。

下载react相关包

mkdir $PACKAGE_DIRS/react-packages
git clone https://github.com/meteor/react-packages $PACKAGE_DIRS/react-packages
meteor add babel-compiler babel-runtime jsx react-meteor-data

创建本地package

cd $PACKAGE_DIRS
meteor create --package ygjack:browserify-deps
cd browserify-deps
mv browserify-deps.js client.browserify.js

创建package的时候,需要author,这里ygjack是我的用户名,因此前缀之。
创建package的时候,默认会创建通明的js文件,但是这里要使用cosmos:browersify,所以需要有一个client.browserify.js文件,这里直接修改命名。
更多关于创建package。

// browserify-deps/package.js
Npm.depends({
'react': '0.13.3',
'material-ui':'0.12.3'
});
Package.onUse(function(api) {
api.versionsFrom('1.2.0.2');
api.use(['cosmos:browserify'], 'client');
api.addFiles(['client.browserify.js'], 'client');
api.export('React', 'client');
api.export('mui', 'client');
api.export('injectTapEventPlugin', 'client');
});

添加client全局变量:

// browserify-deps/client.browserify.js
React = require('react');
mui = require('material-ui');
injectTapEventPlugin = require('react-tap-event-plugin');

添加browserify-deps

cd /path/to/meteor-react-material
meteor add ygjack:browserify-deps

这里meteor会build local package。(由于个人创建的package在add时是需要前缀用户名的,所以这个前面是我自己的用户名ygjack)

这样react和material-ui的依赖都添加好了,可以运行项目在浏览器控制台中访问全局的React, mui就能使用相应的功能了。

添加jsx文件

mkdir client
mkdir client/components
touch client/startup.jsx
touch client/components/App.jsx

client是meteor项目中的特殊目录,详细请参考这里。

// client/startup.jsx
Meteor.startup(function() {
injectTapEventPlugin(); // required by material-ui
React.render(, document.getElementById('mountNode'));
});

// client/components/App.jsx
var DatePicker = mui.DatePicker;
var RaisedButton = mui.RaisedButton;
App = React.createClass({
render: function() {
return (

App






);
}
});

// meteor-react-material.html
...


...

run it

meteor

推荐阅读
  • Node.js学习笔记(一)package.json及cnpm
    本文介绍了Node.js中包的概念,以及如何使用包来统一管理具有相互依赖关系的模块。同时还介绍了NPM(Node Package Manager)的基本介绍和使用方法,以及如何通过NPM下载第三方模块。 ... [详细]
  • CentOS7.8下编译muduo库找不到Boost库报错的解决方法
    本文介绍了在CentOS7.8下编译muduo库时出现找不到Boost库报错的问题,并提供了解决方法。文章详细介绍了从Github上下载muduo和muduo-tutorial源代码的步骤,并指导如何编译muduo库。最后,作者提供了陈硕老师的Github链接和muduo库的简介。 ... [详细]
  • Annotation的大材小用
    为什么80%的码农都做不了架构师?最近在开发一些通用的excel数据导入的功能,由于涉及到导入的模块很多,所以开发了一个比较通用的e ... [详细]
  • React 小白初入门
    推荐学习:React官方文档:https:react.docschina.orgReact菜鸟教程:https:www.runoob.c ... [详细]
  • npminstall-Dbabelcorebabelpreset-envbabelplugin-transform-runtimebabelpolyfillbabel-loader ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • Java如何导入和导出Excel文件的方法和步骤详解
    本文详细介绍了在SpringBoot中使用Java导入和导出Excel文件的方法和步骤,包括添加操作Excel的依赖、自定义注解等。文章还提供了示例代码,并将代码上传至GitHub供访问。 ... [详细]
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 1.利用node实现页面实时更新,主要 ... [详细]
  • 详解react组件通讯方式(多种)
    这篇文章主要介绍了详解react组件通讯方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着 ... [详细]
  • RN即ReactNative基于React框架针对移动端的跨平台框架,在学习RN前建议最好熟悉下html,css,js,当然如果比较急,那就直接上手吧,毕竟用学习前面基础的时间,R ... [详细]
  • Sublime P4语法高亮设置
    Github插件链接:p4-syntax-highlighter首先安装PackageControl。进入Package界面,我的目录:U ... [详细]
  • ReactJSUIAnt设计空组件原文:https://w ... [详细]
  • 使用npmi编译vue项目出现无法下载github.com中的对应的包源文件报错信息如下:npmERR!fatal:unabletoaccess'https:github ... [详细]
author-avatar
虎爷在江湖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有