美文网首页前端
后台小白前端入门--React前端框架搭建Demo及介绍

后台小白前端入门--React前端框架搭建Demo及介绍

作者: wuqke | 来源:发表于2017-02-07 15:07 被阅读756次

前期准备

1.安装Node Node 安装地址

2.通过NPM 全局安装Webpack。命令:npm install -g webpack

简易Demo搭建及说明

1.创建目录结构

创建如下目录:

目录说明:
build:用于存放经过webpack打包后的js文件
jsx:用于存放实际开发编写的jsx文件(即实际开发的js代码都写在这个目录下的文件中)

2.生成 package.json文件

在命令行输入 npm init 生成package.json文件,按照提示输入相关信息,生成文件如下:

 {
  "name": "frontdemo",
  "version": "1.0.0",
  "description": "front demo project",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "http:/xx.xx.xx"
  },
  "keywords": [
    "demo",
    "front"
  ],
  "author": "wuqke",
  "license": "ISC"
}

该文件是包依赖管理的描述性文件,用于管理项目中通过NPM安装的依赖。

生成package.json后目录结构如下:

3.创建webpack.config.js文件

在frontDemo下创建webpack.config.js,内容如下:

 module.exports = {
    entry: {
        index: './jsx/index.jsx',
    },
    output: {
        filename: './build/[name].js'
    },
    module: {
        loaders: [
            {
                test: /\.js[x]?$/,
                exclude: /node_modules/,
                loader: 'babel',
                query: {
                    presets: ["es2015", "react"]
                }
            },
        ]
    }
};

属性说明:
entry:需要通过webpack打包处理的入口文件
output:webpack打包处理后输出的文件位置和名称。结合上面的例子,就是webpack在处理./jsx/index.jsx后,会在./build/目录下生成一个index.js([name]对应于entry中的key)的文件。

loaders:下面大致的意思是,从入口文件中引入的模块(通过require或者import),后缀为js或者jsx的文件都经过babel loader处理( node_modules的除外)。因为我们我们的代码是es6和jsx风格的代码,所以需要在query中使用es2015和react来进行转换。

4.创建html,jsx文件,并安装相关依赖

现在开始创建jsx,html文件。

1.在创建html的文件中加入刚刚webpack输出的js,index.html内容如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Front Demo</title>
    <meta charset="UTF-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge">
<body>
    <div id="main">
    </div>
    <script src="build/index.js" />
</body>
</html>

2.在jsx文件夹下创建index.jsx,添加内容如下(里面涉及到相关的React内容和es6语法,不熟悉的可以通过查阅参考文献进行相关的学习):

import React from 'react';
import ReactDOM from 'react-dom';

class MainContentComponent extends React.Component {
    constructor(props) {
        super(props);
        
    }

    render() {
        return (
            <div>
                hello,this is first demo
            </div>
        );
    }
}

ReactDOM.render(
    <MainContentComponent/>,
    document.getElementById('main')
);

因为这里引入了React和ReactDOM,所以我们需要通过npm来安装相关的依赖,使得webpack在打包处理的时候可以引用到这些依赖的模块,在package.json所在的目录下运行以下两条命令:

npm install react --save
npm install react-dom --save

这样,打开package.json,你就会看到如下内容:

{
  "name": "frontdemo",
  "version": "1.0.0",
  "description": "front demo project",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "http:/xx.xx.xx"
  },
  "keywords": [
    "demo",
    "front"
  ],
  "author": "wuqke",
  "license": "ISC",
+ "dependencies": {
+   "react": "^15.3.2",
+   "react-dom": "^15.3.2"
+ }
}

加号对应的行为新添加的内容,说明依赖的模块react,react-dom已经安装到该项目中了,注意,必须使用--save 才会将依赖的信息写到package.json中,自己独立开发的项目,不加--save写入到package.json也许不会出现错误,但是当别人下载你的项目开发就会发生错误。不过无论如何,自己开发还是团队项目,使用--save将依赖写入到依赖描述文件中,是更好的选择和习惯。

5.运行webpack,在build目录下生成目标js

此时,我们就可以在webpack.config.js所在的目录下运行webpack,来生成浏览器端js引擎可以识别的目标文件了,你只需要打命令webpack,webpack就会在该目录下找webpack.config.js,根据这个js下的文件来打包处理对应的文件了。输入命令后,你会发现有如下错误:

这是因为,webpack里面使用的loader,也是开发相关的依赖,也需要通过npm来安装到该项目中来,命令如下:

npm install webpack --save-dev
npm install babel-core --save-dev 
npm install babel-loader --save-dev 
npm install babel-preset-es2015 --save-dev
npm install babel-preset-react --save-dev

安装完后,package.json应多了如下内容:

{
  "name": "frontdemo",
  "version": "1.0.0",
  "description": "front demo project",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "http:/xx.xx.xx"
  },
  "keywords": [
    "demo",
    "front"
  ],
  "author": "wuqke",
  "license": "ISC",
  "dependencies": {
    "react": "^15.3.2",
    "react-dom": "^15.3.2"
  },
+ "devDependencies": {
+   "babel-core": "^6.17.0",
+   "babel-loader": "^6.2.5",
+   "babel-preset-es2015": "^6.16.0",
+   "babel-preset-react": "^6.16.0",
+   "webpack": "^1.13.2"
+ }
}


上面在使用npm install时,添加的参数是--save-dev,而不是--save。因为我们这里加进来的依赖是属于开发中需要的依赖,实际项目运行并不需要这些依赖,所以将其放在devDependencies,加以区分,方便管理。

这时候,你再运行webpack,就会发现如下信息:

说明webpack已经成功输出目标js,此时目录结构如下:

build目录下,已经生成了index.js,在浏览器中打开index.html,如果在页面中看到如下字样:

hello,this is first demo

说明你已经成功使用webpack打包处理输出了目标文件。

在实际开发的时候,你或许在jsx文件中修改了某个字段,就想马上刷新浏览器,看到实际的效果,但是又不想重复输入命令webpack来打包处理,那你可以试试这个命令:

webpack --progress --colors --watch

该命令会启动一个常驻进程,实时监测jsx文件的变化并更新对应的目标文件。

6.使用React-Bootstrap

React-Bootstrap是Bootsrap项目使用React重写而成的中后台前端页面框架,非常适合迅速开发相关后台界面。话不多说,使用npm来将其安装到本项目中:

npm install react-bootstrap --save

在index.html中引入相关css文件,如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Front Demo</title>
    <meta charset="UTF-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge">
 +  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/latest/css/bootstrap.min.css">
<body>
    <div id="main">
    </div>
    <script src="build/index.js" type="text/javascript"></script>
</body>
</html>


其实也可以像引入js那样在js代码中引入css,只需要在webpack中加入style-css loader即可,不过这里不再给出例子。

然后,查阅React-Bootstrap Components,将需要的组件引入并放在你想要它出现的位置即可,以Bootstrap 导航栏为例,修改index.jsx代码如下:


import React from 'react';
import ReactDOM from 'react-dom';
+import {Nav,Navbar,NavItem,NavDropdown,MenuItem} from 'react-bootstrap';

class MainContentComponent extends React.Component {
    constructor(props) {
        super(props);
        
    }

    render() {
        return (
-           <div>
-               hello,this is first demo
-           </div>
+           <Navbar inverse>
+               <Navbar.Header>
+                 <Navbar.Brand>
+                   <a href="#">React-Bootstrap</a>
+                 </Navbar.Brand>
+                 <Navbar.Toggle />
+               </Navbar.Header>
+               <Navbar.Collapse>
+                 <Nav>
+                   <NavItem eventKey={1} href="#">Link</NavItem>
+                   <NavItem eventKey={2} href="#">Link</NavItem>
+                   <NavDropdown eventKey={3} title="Dropdown" id="basic-nav-+dropdown">
+                     <MenuItem eventKey={3.1}>Action</MenuItem>
+                     <MenuItem eventKey={3.2}>Another action</MenuItem>
+                     <MenuItem eventKey={3.3}>Something else here</MenuItem>
+                     <MenuItem divider />
+                     <MenuItem eventKey={3.3}>Separated link</MenuItem>
+                   </NavDropdown>
+                 </Nav>
+                 <Nav pullRight>
+                   <NavItem eventKey={1} href="#">Link Right</NavItem>
+                   <NavItem eventKey={2} href="#">Link Right</NavItem>
+                 </Nav>
+               </Navbar.Collapse>
+           </Navbar>
        );
    }
}

ReactDOM.render(
    <MainContentComponent/>,
    document.getElementById('main')
);

在浏览器中打开页面,看到如下页面:


参考文献中包含了React,es6语法等技术框架的相关文献,有需要的可以参阅。

相关技术资料站

相关文章

网友评论

  • 9b833906b80e:前端时间才开始接触react,对整个体系都不太了解,收获很多,讲得很细,适合我这种刚入门的小白

本文标题:后台小白前端入门--React前端框架搭建Demo及介绍

本文链接:https://www.haomeiwen.com/subject/uixmittx.html