资讯专栏INFORMATION COLUMN

React-APP结合webpack搭建项目

jayzou / 2297人阅读

摘要:搭建项目有三种安装的方式,想了解的登录官网查看,今天介绍的一个自动安装的不需要怎么配置环境,自动生成的方式,类似于并实现一个小案例,留言功能官网的安装教程安装依次安装最终启动自后会出现一个页面大家可以去试试下边我们配置一

React-APP搭建项目

React有三种安装的方式,想了解的登录React官网查看,今天介绍的一个自动安装的不需要怎么配置环境,自动生成的方式,类似于vue-cli!并实现一个小案例,留言功能!

官网的安装教程!

安装react-app
//依次安装
npm install -g create-react-app
create-react-app my-app

cd my-app
npm start

最终启动自后会出现一个Welcome React页面,
大家可以去试试.

下边我们配置一下项目结构

安装我们需要的loader
npm file-loader url url-loader --save-dev
配置webpack
rules: [
     {test: /.js$/, exclude: /node_modules/, loader: "react-hot-loader!babel-loader"},
     {test: /.css$/, exclude: /node_modules/, loader: "style-loader!css-loader"},
     { test: /.eot(?v=d+.d+.d+)?$/, loader: "file-loader" },
     { test: /.(woff|woff2)$/, loader:"url-loader?prefix=font/&limit=5000" },
     { test: /.ttf(?v=d+.d+.d+)?$/, loader: "url-loader?limit=10000&mimetype=application/octet-stream" },
     { test: /.svg(?v=d+.d+.d+)?$/, loader: "url-loader?limit=10000&mimetype=image/svg+xml" }
  ]
复制之前的webpack.config.js文件

我们加以改造

module.exports = {
  entry: "./index.js",
  output: {
    path:path.resolve(__dirname,"build"),
    publicPath:"/assets/",
    filename: "bundle.js"
  },
  module: {
      rules: [
    { test: /.js$/, exclude: /node_modules/, loader: "react-hot-loader!babel-loader" },
    { test: /.css$/, exclude: /node_modules/, loader: "style-loader!css-loader" },
    { test: /.eot(?v=d+.d+.d+)?$/, loader: "file-loader" },  //添加
    { test: /.(woff|woff2)$/, loader:"url-loader?prefix=font/&limit=5000" }, //添加
    { test: /.ttf(?v=d+.d+.d+)?$/, loader: "url-loader?limit=10000&mimetype=application/octet-stream" }, //添加
    { test: /.svg(?v=d+.d+.d+)?$/, loader: "url-loader?limit=10000&mimetype=image/svg+xml" } //添加
      ]
    } 
}    
导入我们之前的json文件
{
  "name": "myapp",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "antd-mobile": "^1.5.0",
    "react": "^15.6.1",
    "react-dom": "^15.6.1",
    "react-scripts": "1.0.10"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  },
  "devDependencies": {
    "babel-plugin-import": "^1.2.1",
    "node-sass": "^4.5.3",
    "sass-loader": "^6.0.6"
  }
}
输入npm install补全我们的项目结构
npm install
引入bootstap模块

我们的bootstap是事先安装完成之后,把他移动到css项目目录下的,index配置如下

//入口文件index.js下
import React from "react";
import ReactDOM from "react-dom";
import LiuYanapp from "./LiuYanapp";

import "./bootstrap/css/bootstrap.min.css";  //引入样式文件
ReactDOM.render(,document.getElementById("app"));      //输出到页面
创建留言模板,并划分项目模块

import React from "react";

import LiuYanList from "./LiuYanList";
import LiuYanForm from "./LiuYanForm";

class LiuYanapp extends React.Component{
    constructor(props){
        super(props);
        this.ids=1;
        this.state={
                todos:[]
        };
        
        this.addItem=this.addItem.bind(this);
        this.deleteItem=this.deleteItem.bind(this);
    }
    deleteItem(id){
        let newtodos=this.state.todos.filter((item)=>{
            return !(item.id==id)
        });
          this.setState({
            todos:newtodos
        });

    }

    addItem(value){
       this.state.todos.unshift(
            {
                id:this.ids++,
                text:value,
                time:(new Date()).toLocaleString(),
                done:0
            }
       )
        this.setState({
            todos:this.state.todos
        });   
    }

    render(){
        return (
            





留言板

); } } export default LiuYanapp;
创建LiuYanForm.js文件
import React from "react";

class LiuYanForm extends React.Component{
   tijiao(event){
        event.preventDefault();
    }
    add(event){        
        if(event.type=="keyup"&&event.keyCode!=13){
            return false;
        }
        let txt=this.refs.txt.value;
        if(txt=="") return false;       
        this.props.addItem(txt);
        this.refs.txt.value="";
    }
    render(){
        return(
             
); } } export default LiuYanForm;
创建LiuYanItem.js文件
import React from "react";

class LiuYanItem extends React.Component{
    delete(){
        this.props.deleteItem(this.props.data.id);
    }
    render(){

        let {text,time,done,id}=this.props.data;

        return (
           
               {text}
                   

{time} 删除留言 ); } } export default LiuYanItem;
创建LiuYanList.js文件
import React from "react";

import LiuYanItem from "./LiuYanItem";
class LiuYanList extends React.Component{
    render(){
        let todos=this.props.data;
       
        let todoItems=todos.map(item=>{
            return 
        });
        
        return (
            
                    {todoItems}
                
留言
); } } export default LiuYanList;

这样我们的留言功能就创建完了,大家输入npm start就可以对项目进行启动!想了解的同学们可以复制回去实验一下!

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

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

相关文章

  • 通过create-react-app从零搭建react环境

    摘要:通过文件可以对图标名称等信息进行配置。注意,注册的只在生产环境中生效,并且该功能只有在下才能有效果该文件是过滤文件配置该文件是描述文件定义了项目所需要的各种模块,以及项目的配置信息比如名称版本许可证等元数据。 一、 快速开始: 全局安装脚手架: $ npm install -g create-react-app 通过脚手架搭建项目: $ create-react-app 开始项目: ...

    Cympros 评论0 收藏0
  • 通过create-react-app从零搭建react环境

    摘要:通过文件可以对图标名称等信息进行配置。注意,注册的只在生产环境中生效,并且该功能只有在下才能有效果该文件是过滤文件配置该文件是描述文件定义了项目所需要的各种模块,以及项目的配置信息比如名称版本许可证等元数据。 一、 快速开始: 全局安装脚手架: $ npm install -g create-react-app 通过脚手架搭建项目: $ create-react-app 开始项目: ...

    CoyPan 评论0 收藏0
  • webpack4 + react 搭建多页面应用

    摘要:升级到之后还没好好的同步一个可实用的架子,接下来用来搭建一个简单的的多界面应用,废话不说直接撸码创建工程目录结构工程目录结构配置安装依赖引入打开浏览器配置文件合并基础配置一些路径配置设置开发环境 webpack 升级到4之后还没好好的同步一个可实用的webpack架子,接下来用webpack4来搭建一个简单的react的多界面应用,废话不说 直接撸码 创建工程 $ mkdir dem...

    nifhlheimr 评论0 收藏0
  • webpack4 + react 搭建多页面应用

    摘要:升级到之后还没好好的同步一个可实用的架子,接下来用来搭建一个简单的的多界面应用,废话不说直接撸码创建工程目录结构工程目录结构配置安装依赖引入打开浏览器配置文件合并基础配置一些路径配置设置开发环境 webpack 升级到4之后还没好好的同步一个可实用的webpack架子,接下来用webpack4来搭建一个简单的react的多界面应用,废话不说 直接撸码 创建工程 $ mkdir dem...

    wushuiyong 评论0 收藏0

发表评论

0条评论

jayzou

|高级讲师

TA的文章

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