资讯专栏INFORMATION COLUMN

react+webpack+webstorm开发环境搭建

Snailclimb / 926人阅读

摘要:先是基础知识,首先是补了的基础,使用了的入门教程。另外关于,慕课的视频教程讲的也比较清晰,适合入门统统过了一遍之后,开始建立脚手架,正式上马编写。废话不多说了,下面一步一步开始了。安装完成之后,记得设置路径构建项目使用新建一个空白项目。

前言

春节期间,更新了一下自己关于前端的知识体系,要知道对于前端技术,我还是停留在JSP,JQUERY的时代,现在项目里面使用REACT作为前台,所以带着看一看的心态,看了前台同学的脚手架,看完吓了一跳,因为...完全看不懂.所以借着这个机会好好的将REACT摸一遍。

先是基础知识,首先是补了NODEJS的基础,使用了RUNOOB的入门教程。简单的介绍了NODE的相关模块,主要有系统文件系统操作,WEB模块,GET&POST参数解析,以及EXPRESS框架介绍,都介绍的比较浅。

然后是有幸看到阮一峰关于REACT的博客,主要看了ES6,Babel,Webpack, React 和 React-Route 以及 Redux。
另外关于WEBPACK,慕课的视频教程讲的也比较清晰,适合入门
统统过了一遍之后,开始建立REACT脚手架,正式上
马(编写Hello World)。选定REACT + WEBPACK + WEBSTORM. 话说作为windows老铁,断断续续在家里用了两年的MAC(公司办公还是用WIN)后,慢慢对MAC路转粉了,作为程序员,MAC真的很方便。废话不多说了,下面一步一步开始了。

安装软件

需要安装node.js和npm工具,这个就不多说了,现在安装node附带npm了。如果你安装了brew,直接使用brew install node即可。
使用 node -v , npm -v 检查是否安装完成。
安装完成之后,记得设置NODE_PATH路径

构建项目

使用webstorm新建一个空白项目。

打开webstorm的控制台,输入npm init初始化一个package.json(和maven一样,这个是npm的依赖库描述文件)

安装使用的库,其中--save-dev会把下载包的相关信息自动写到package.json的devDependencies中,其他人只需要运行npm install就可以下载相关的依赖到当前项目中。

npm install webpack webpack-dev-server babel --save-dev
npm install react react-dom babel-loader less-loader css-loader style-loader url-loader file-loader babel-preset-es2015 babel-preset-react react-hot-loader jquery eslint eslint-plugin-react --save-dev
项目文件

均在当前项目文件夹下新建一下文件/目录

新建webpack.config.js文件

"use strict";
var webpack = require("webpack");
var path = require("path");

//change:使用commonsplugin打包失败,替换成htmlWebpackPlugin
var commonsPlugin = new webpack.optimize.CommonsChunkPlugin("common.js");
var htmlWebpackPlugin = require("html-webpack-plugin");

module.exports = {

    devtool: "eval",
    entry: [
        "./src/js/main.js"
    ],
    output: {
        path: path.join(__dirname, "dist"),
        filename: "bundle.js",
        publicPath: "/static/"
    },
    plugins: [
        new htmlWebpackPlugin({
            template:"index.html",
            filename:"index.html",
            title:"webpack is good"
        })
    ],

    module: {
        loaders: [
            {
                test: /.css$/,
                loader: "style-loader!css-loader"
            },
            {
                test: /.jsx?$/,
                loaders: ["react-hot-loader/webpack", "babel-loader"],
                exclude: /node_modules/,

            },
            {
                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"
            }
        ]
    },
    resolve:{
        extensions:[".js", ".jsx", ".less", ".css"]
    }
};

新建.babelrc文件

{
  "presets": ["es2015",  "react"]
}

新建.eslintrc文件

{
  "ecmaFeatures": {
    "jsx": true,
    "modules": true
  },
  "env": {
    "browser": true,
    "node": true
  },
  "parser": "babel-eslint",
  "rules": {
    "quotes": [2, "single"],
    "strict": [2, "never"],
    "react/jsx-uses-react": 2,
    "react/jsx-uses-vars": 2,
    "react/react-in-jsx-scope": 2
  },
  "plugins": [
    "react"
  ]
}

新建server.js文件

var webpack = require("webpack");
var WebpackDevServer = require("webpack-dev-server");
var config = require("./webpack.config");

new WebpackDevServer(webpack(config), {
    publicPath: config.output.publicPath,
    hot: true,
    inline:true,
    historyApiFallback: true
}).listen(3000, "localhost", function (err, result) {
    if (err) {
        return console.log(err);
    }

    console.log("Listening at http://localhost:3000/");
});

修改package.json

"scripts": {
    "dev": "webpack-dev-server --open",
    "start": "node server.js",
    "lint": "eslint src"
  }

创建src/js文件夹

创建src/js/a.js

import React, { Component } from "react";

export default class Hello extends Component {
    render() {
        return (
        

Hello, world.

this is a simple section

终于搭建成功了

); } }

创建src/js/main.js

import React from "react";
import ReactDOM from "react-dom";
import Hello from "./a";

ReactDOM.render(, document.getElementById("root"));

创建index.html




    
    test


<%= htmlWebpackPlugin.options.title %>
运行项目

在控制台运行npm run start,在浏览器中输入http://localhost:3000/dist/index.html,出现一下页面,即表示脚手架搭建完成。

Hello, world.
this is a simple section
终于搭建成功了
webpack is good

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/107609.html

相关文章

  • 关于Vue2一些值得推荐的文章 -- 五、六月份

    摘要:五六月份推荐集合查看最新的请点击集前端最近很火的框架资源定时更新,欢迎一下。苏幕遮燎沈香宋周邦彦燎沈香,消溽暑。鸟雀呼晴,侵晓窥檐语。叶上初阳乾宿雨,水面清圆,一一风荷举。家住吴门,久作长安旅。五月渔郎相忆否。小楫轻舟,梦入芙蓉浦。 五、六月份推荐集合 查看github最新的Vue weekly;请::点击::集web前端最近很火的vue2框架资源;定时更新,欢迎 Star 一下。 苏...

    sutaking 评论0 收藏0
  • 关于Vue2一些值得推荐的文章 -- 五、六月份

    摘要:五六月份推荐集合查看最新的请点击集前端最近很火的框架资源定时更新,欢迎一下。苏幕遮燎沈香宋周邦彦燎沈香,消溽暑。鸟雀呼晴,侵晓窥檐语。叶上初阳乾宿雨,水面清圆,一一风荷举。家住吴门,久作长安旅。五月渔郎相忆否。小楫轻舟,梦入芙蓉浦。 五、六月份推荐集合 查看github最新的Vue weekly;请::点击::集web前端最近很火的vue2框架资源;定时更新,欢迎 Star 一下。 苏...

    khs1994 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<