搭建Amazeui+react+webpack+webstorm开发环境

源起

最近在学习Amazeui-react的开发,发现react着实是一个好东西,但是蛋疼的是webpack这个东西好难配置,稍不注意就会导致自动编译失败,会出现一堆的问题,下面就请跟我一起从零开始学习React+webpack配置,并且如何在webstorm中很好的运用它们。

准备

1、下载webstorm11和nodejs。
下载太慢?直接百度云打包分享吧~~windows mac osx

开始

由于我的电脑的MacBook不是windows,因此可能安装和操作过程会有略微差异,但是差异不大,下面操作基本通用,不通用的我会指明。或者下面留言即可。

  1. 首先,确定你已经了解了react是干什么的,对react还不了解的请移步这里:react快速入门,我大体总结下吧:你就直接把react理解成能够用js实现web前端的组件化开发的一个框架就好了,它通过虚拟DOM来简化DOM操作提升性能,同时更好的实现模块化封装。再深了也没必要说了。
  2. 其次,你还得知道webpack是干什么的,对webpack不了解的请移步这里:webpack官网。这个网站我没有发现偏官方的中文站点,但是CSDN上应该有很多相关的教程。webpack是一个构建工具,能够把所有的静态资源进行编译打包,比如.js、.css、.png、.less等等吧,反正只要是静态的,不是什么php、jsp之类的动态网站文件都能打包。通过它统一管理资源和模块。
  3. 再次,你还得知道点nodejs的知识,这个网站nodejs中文教程会告诉你nodejs干什么用,都有哪些api。nodejs是一个在服务器端的高性能javascript框架,能够快速处理高并发的请求。它主要用的就是回调原理,通过它提供的api可以实现一些web请求处理。其中,nodejs包含了一个npm,全称是node package manager,说白了就是node项目的包管理器,通过npm命令,我们可以使用成千上万的javascript框架。
  4. 最后,就是你得会用webstorm了。这个被称为javascript开发神器IDE,能够大大提升你开发web前端的效率。
    综上,我觉得能进入这篇博客的人想必肯定早就知道以上几个工具是干什么用的了,否则还进来干吗?串门啊?

入门

  1. 安装完毕上述几个工具之后,请打开你的命令行工具:windows 按下Windows符号键+R,输入cmd,会弹出命令行工具;mac直接在Launchpad中查找终端即可,Linux跟mac没啥区别,自己找终端去,在下面我们姑且统一称之为命令行。
  2. 首先在命令行中输入:npm -v ,看看是否有版本号出现。如果出现了,证明你的nodejs安装成功了,不需要配置环境变量。如果没出现,那么你还得把环境变量配置一下。不过nodejs默认是给你配置好环境变量的。
  3. 配置npm的代理地址:(由于伟大的墙的原因,会导致下载包很慢很慢~~~)
npm config set registry https://registry.npm.taobao.org 
  1. 下面进入正轨了啊!!!提神!注意!看这,看这~~
  2. 启动webstorm,初次使用的话会让你导入以前的配置。如果是以前有配置文件就导入,没有就选择初次使用那一项。然后选择,create new project,建立一个新的工程。工程名就叫做:react_webpack_test吧。
  3. 点击OK,进入界面。然后打开webstorm的首选项设置(windows是File-settings),在Languages & Frameworks的JavaScript一栏选择JSX Harmony,点击OK。
  4. 重新打开命令行,依次输入
sudo npm install webpack webpack-dev-server babel  -g
sudo npm install react react-dom babel-loader less-loader css-loader style-loader url-loader file-loader babel-preset-es2015 babel-preset-react --save-dev

安装结果会显示一些WARN,无视!但是千万别有Error。

  1. 第一条命令是全局安装,模块会安装在/usr/local/,注意全局安装在mac/linux系统需要sudo然后输入密码,而windows不需要sudo哦~第二条会安装在/node_modules/下面。

参数解释:
-g:允许包全局使用
--save-dev:将依赖信息写入package.json的devdependencies。
安装的每个组件解释:
babel:�能将es6语法解析成es5(什么是es??ECMAScript6入门自己看去,js是它的子集,说白了就是最新的javascript语法),以前是使用jsx-loader来解析着,现在直接用babel替代就行了。
babel-preset-es2015和babel-preset-react:让babel支持es2015语法和jsx语法的两个预设值。
webpack:这个还用说吗?
react-dom:依赖于react,现在都是通过ReactDOM.render()方法来渲染而不是React.render(),facebook官方已经说了。
webpack-dev-server:webpack开发服务器,帮助开发者实时监控webpack项目的文件更改并反映到浏览器上。这样你就能实时地进行预览啦~
babel-loader css-loader babel-loader style-loader url-loader file-loader:几种webpack需要用到的加载器,方便解析css、es6/jsx、和其他静态文件。
小提示:
全局安装支持直接在命令行中启用安装包的命令,例如:你安装了webpack,那么在命令行输入webpack就会出现相应执行,但是非全局不支持使用这个命令的哦。

  1. 接下来,再打开webstorm(最好这两个工具你都别关~)。在刚才那个react_webpack_test的工程中创建一个文件,文件名为webpack.config.js,然后在里边写上下面的代码:
var webpack=require('webpack');
var commonsPlugin=new webpack.optimize.CommonsChunkPlugin('common.js');
module.exports={
    entry:{index:'./src/js/entry.js'},
    output:{
        path:'dist',
        filename:'bundle.js'
    },
    module:{
        loaders:[
            {
                test:/\.css$/,
                loader:'style-loader!css-loader'
            },
            {
                test:/\.jsx?$/,
                loader:'babel',
                exclude: /node_modules/,
                query:{
                    presets:['es2015','react']
                }
            },
            {
                test:/\.(png|jpg)$/,
                loader:'url-loader?limit=8192'
            },
            {
                test:/\.less$/,
                loader:'style-loader!css-loader!less-loader'
            },
            {
                test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
                loader: "url-loader?limit=10000&mimetype=application/font-woff"
            },
            {
                test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
                loader: "file-loader"
            }
        ],
        plugins:[
            commonsPlugin
        ]
    },
    resolve:{
        root:'',
        extensions:['','.js','.json','.less'],
        alias:{
            AppStore:'js/stores/AppStores.js'
        }
    }
}

然后在当前工程目录创建一个src文件夹,在src里面创建一个js文件夹,在js文件夹中新建一个entry.js文件,文件内容如下:

var React=require('react');
var ReactDOM=require('react-dom');
ReactDOM.render(<div>Hello world!</div>, document.getElementById("test"));

接下来再在当前工程目录中新建一个dist文件夹,dist文件夹中新建一个index.html文件。内容如下:

<html>
<meta charset="utf-8">
<title>React webpack test</title>
</head>
<body>
  <div id="test"></div>
</div>
<script type="text/javascript" src="./bundle.js" charset="utf-8"></script>
</body>
</html>

最后一步,最后一步了哦~~加入package.json文件,使之成为一个可以用npm命令执行的工程。

{
  "name": "react_webpack_test",
  "version": "1.0.0",
  "description": "just webpack and react hello world project!",
  "scripts": {
    "build": "webpack --progress --profile --colors",
    "watch": "webpack-dev-server --port 63340 --content-base ./dist/",
    "test": "echo \"Error: no test specified\" && exit 1"
  }
}

其中最重要的是script标签。
接下来我们打开webstorm的Terminal功能(在IDE底部),在里面输入

npm run build

然后,在你的Terminal里面会显示如下的东东

> react_webpack_test@1.0.0 build /Users/你的工程所在目录/react_webpack_test
> webpack \--progress \--profile \--color  2m0ms op1ms optimiz12ms emit
Hash: 292766b53fb3969afd55
Version: webpack 1.12.14
Time: 5109ms
    Asset    Size  Chunks             Chunk Names
bundle.js  676 kB       0  [emitted]  index
    \+ 159 hidden modules

如果里面出现了红色的Error那么就说明你的工程配置还有一些问题,如果OK的话,打开浏览器,在里面运行你的dist/index.html文件,看看是否有:hello world!输出

  1. 实时调试你的代码~
    在webstorm的Terminal中输入npm run watch,然后会在里面输出一堆日志,日志中不能出现红色的Error,同时会输出下面两句:
http://localhost:63340/webpack-dev-server/
省略这部分……
webpack: bundle is now VALID.

输入:http://localhost:63340/webpack-dev-server/,应该就可以看到你想要的结果,结果如下:
插入图片哦

  1. �这个就是用来充数的,光棍节快乐!!

进阶

**喝杯茶~
……
**
到了这可以说你的项目就已经完成了,如果你想跟我一样使用Amazeui-react组件,那么就继续跟我这样继续下去吧~

  1. 安装Amazeui-react
npm install amazeui amazeui-react --save-dev
  1. 修改./src/js/entry.js文件,替换成以下代码:
var React=require('react');
var ReactDOM=require('react-dom');
var AMUI=require('amazeui/dist/css/amazeui.min.css');
var AMUIReact = require('amazeui-react');
var button=(
    <AMUIReact.Button>这是一个按钮</AMUIReact.Button>
);
ReactDOM.render(button,document.getElementById("test"));
  1. Ctrl+S,保存当前代码,查看你的浏览器http://localhost:63340/webpack-dev-server/页面有没有变化~~

下面是我的测试工程链接,自己下载下来拿去用吧.
react_webpack_test

整整连写带测试折腾了我一下午,为了保证每一处写的没有疏漏,我现卸载掉我电脑上的webstorm和nodejs~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270

推荐阅读更多精彩内容

  • 无意中看到zhangwnag大佬分享的webpack教程感觉受益匪浅,特此分享以备自己日后查看,也希望更多的人看到...
    小小字符阅读 8,083评论 7 35
  • GitChat技术杂谈 前言 本文较长,为了节省你的阅读时间,在文前列写作思路如下: 什么是 webpack,它要...
    萧玄辞阅读 12,613评论 7 110
  • 构建一个小项目——FlyBird,学习webpack和react。(本文成文于2017/2/25) 从webpac...
    布蕾布蕾阅读 16,752评论 31 98
  • 高晓松说:音乐是世界上没有的东西,它完全是从灵魂而来,全世界不同国家不同种族即便相隔千山万水,大家的音乐也都是一样...
    甪玺阅读 606评论 0 1
  • 关键词:提分手题主:男 问:冷爱,你好,我今年28岁,目前在北京参加程序员培训,在家乡有房有车,独非处,大专学历。...
    冷爱阅读 637评论 0 0