react最佳入门实践(1)

1.环境搭建

React 是 Facebook 推出的一个用来构建用户界面的 JavaScript 库

1.1.安装node(mac版)

  安装homebrew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

  通过homebrew安装node

brew install node

  测试是否安装正确

node -v
npm -v 

注意:window平台安装node很简单,只需要一直点击 下一步 安装即可

1.2.创建项目结构

mkdir react-demo //创建app目录 用来存放项目源文件
cd react-demo //进入react-demo目录
mkdir dist // 创建dist目录 用来存放打包好的文件
touch webpack.config.js //创建webpack的配置文件
mkdir src //创建源码目录
cd src //进入到src目录
mkdir components //存放组件目录
touch index.js //在app目录中创建 index文件 入口文件
cd .. //返回到 react-demo目录
npm init -y //初始化项目

  

1.3. 安装webpack

npm install webpack --save-dev

  

1.4.配置webpack

在webpack.config.js文件中输入下面配置内容

 module.exports = {
    context:__dirname+"/src",  //源文件目录
    entry:{
        index:"./index.js"   //在源文件目录下去找index.js 文件作为打包的入口文件
    },
    output:{
        path:__dirname+"/dist",     //生成的文件存放目录
        filename:"[name].bundle.js"   //生成的文件  name 表示entry下面的app
    }
}

  

1.5.让npm 可以运行 webpack

在package.json 文件中 添加一条命令

{
  "name": "ES6-demo",
  "version": "1.0.0",
  "description": "",
  "main": "webpack.config.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build":"./node_modules/.bin/webpack"
  },
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {},
  "devDependencies": {
    "webpack": "^2.6.1"
  }
}

  

1.6.使用打包好的js文件

·    在dist目录下面新建index.html 文件,并且引入打包好的js文件

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0,
          maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<script src="index.bundle.js"></script>
</body>
</html>

  

1.7.测试打包是否成功

在src目录下的index.js中输入一行代码

alert(1)

  

在命令行窗口中执行命令():

npm run build

  

注意:执行命令的时候需要确保目录是在当前项目,例如:E:\ES6-demo>

1.8.使用babel来编译ES6

安装相关loader

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

  

修改webpack.config.js 配置文件,添加规则:

module.exports = {
    context:__dirname+"/app",
    entry:{
        index:"./index.js"
    },
    output:{
        path:__dirname+"/dist",
        filename:"[name].bundle.js"
    },
    module:{
        rules:[
            {
                test:/\.jsx?$/,
                exclude: /node_modules/,
                use: [{
                    loader: "babel-loader",
                    options: { presets: ["es2015"] }
                }],
            },
        ]
    }
}

  

1.9.添加web服务器支持

安装webpack-dev-server

npm install webpack-dev-server --save-dev

  

修改package.json文件,添加后:

 "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build":"./node_modules/.bin/webpack",
    "dev": "./node_modules/.bin/webpack-dev-server --content-base dist"  //这里是新添加内容
  },

  

最后执行 npm run dev执行编译,在浏览器http://localhost:8080/输入查看效果

1.10.添加react支持

npm install react react-dom --save
npm install babel-preset-react --save-dev

  

修改webpack.config.js 配置文件,修改后:

module.exports = {
    context:__dirname+"/app",
    entry:{
        index:"./index.js"
    },
    output:{
        path:__dirname+"/dist",
        filename:"[name].bundle.js"
    },
    module:{
        rules:[
            {
                test:/\.jsx?$/,
                exclude: /node_modules/,
                use: [{
                    loader: "babel-loader",
                    options: { presets: ["react","es2015"] }
                }],
            },
        ]
    }
}

  

测试是否react是否配置正确

在src目录下 index.js文件中添加下面内容

import React from ‘react‘;
import ReactDOM from ‘react-dom‘;
ReactDOM.render(<h1>hello</h1>,document.querySelector("#container"))

  

在dist目录下 index.html 文件中添加一个div

<div id="container"></div>

  执行命令

npm run dev

  

在浏览器中输入 http://localhost:8080查看结果

1.11 添加样式支持

安装css-loader 和 style-loader

npm install css-loader style-loader --save-dev

  

修改配置webpack.config.js 配置文件

module.exports = {
    context:__dirname+"/app",
    entry:{
        app:"./index.js"
    },
    output:{
        path:__dirname+"/dist",
        filename:"[name].bundle.js"
    },
    module:{
        rules:[
            {
                test:/\.jsx?$/,
                exclude: /node_modules/,
                use: [{
                    loader: "babel-loader",
                    options: { presets: ["react","es2015"] }
                }],
            },
            {   //这里的内容是新增加的对样式的支持
                test: /\.css$/,
                use: ["style-loader", "css-loader"],
            },
        ]
    }
}

  

测试样式代码是否添加成功:

1)在src目录下 新建css目录 并且创建样式文件,index.css

body{
      background-color: green
}

  

2) 在src下index.js 文件中添加 一行代码引用css

import ‘./css/index.css‘

  

关注微信更多学习资料分享!

时间: 2024-08-28 21:08:41

react最佳入门实践(1)的相关文章

[Android] 自定义ViewGroup最佳入门实践

对自定义view还不是很了解的码友可以先看自定义View入门这篇文章,本文主要对自定义ViewGroup的过程的梳理,废话不多说. 1.View 绘制流程 ViewGroup也是继承于View,下面看看绘制过程中依次会调用哪些函数. 说明: measure()和onMeasure() 在View.Java源码中: public final void measure(int widthMeasureSpec,int heightMeasureSpec){ ... onMeasure ... } p

python 最佳入门实践

勿在浮沙筑高台,无论什么技术,掌握核心精神和api,是很重要的. 但是入门过程也可能不是一帆风顺的,这里有八个入门任务,看看你完成了没有: http://code.tutsplus.com/articles/the-best-way-to-learn-python--net-26288

webpack最佳入门实践系列(10)

10.css模块化 10.1.什么是css模块? CSS模块就是所有的类名都只有局部作用域的CSS文件,当你在一个JavaScript模块中导入一个CSS文件时,CSS模块将会定义一个对象,将文件中类的名字动态的映射为JavaScript作用域中可以使用的字符串,CSS模块不是浏览器中的官方标准(official spec) 或者 实践(implementation) 而是一个(在Webpack或者Browserify的帮助下)改变类名和选择器的作用域到当前文件(类似于命名空间)的构建过程 通俗

webpack最佳入门实践系列(4)

7.使用字体 7.1.安装字体库-font-awesome 我们通过npm来安装字体 npm install font-awesome --save 这个时候,我们的package.json配置文件变成这样: { "name": "code", "version": "1.0.0", "description": "", "main": "index.js&

webpack最佳入门实践系列(2)

3.插件 在前端迅速发展的今天,许多没有太多技术含量并且感觉是在浪费时间的事情,就可以交给构建工具来做,例如:我们去手动创建index.html,手动引入打包好的js文件等操作,都可以叫个webpack来做,帮助我们提升效率,因此,你只需要理解,插件其实就是webpack的一些扩展功能,旨在帮助我们提示效率的工具 3.1.html-webpack-plugin插件 这个插件就是帮我们自动生成html文件并且自动引入打包好的js文件 1.插件安装 npm install html-webpack-

Ajax+Node.js前后端交互最佳入门实践(04)

4.JSON 4.1 什么是JSON? JavaScript 对象表示法(JavaScript Object Notation)简称JSON,是一种轻量级的数据交换格式.虽然它基于JavaScript的对象字面量表示法,但是它于语言却是无关的,这里说的无关意思是说没有依赖关系,不是说只有在js中才能用,再别的语言中也是可以用的. var student = { "name": '张三', "age": 29, "data":[1,2,3] };

Ajax+Node.js前后端交互最佳入门实践(06)

6.XMLHttpRequest对象 XMLHttpRequest 是一个 API,它为客户端提供了在客户端和服务器之间传输数据的功能.它提供了一个通过 URL 来获取数据的简单方式,并且不会使整个页面刷新.这使得网页只更新一部分页面而不会打扰到用户.XMLHttpRequest 在 AJAX 中被大量使用. 6.1.创建XMLHttpRequest对象 6.1.1 XMLHttpRequest兼容性问题 XMLHttpRequest在ie6以下是以插件的形式来使用的,没有内置在浏览器中,所以在

Ajax+Node.js前后端交互最佳入门实践(07)

7.ajax函数封装 7.1.实例引入 需求: 每秒钟请求一次服务器 获取到数据 实现: 把ajax进行封装 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script src="ajax.js" type="text/javascript" charset="utf

Ajax+Node.js前后端交互最佳入门实践(01)

1.Node.js简介 1.0.前后台数据交互流程 在web开发中,我们经常听说前端和后台,他们分别是做什么具体工作的呢?他们怎样交互的呢?我们得把这些基础的问题都搞明白了,才有一个大致的学习方向,首先,我们来看一张生活中几乎每个人都经历过的一个场景,如下图: 当你去餐馆吃饭的时候,坐下后服务员会带着一个菜单过来,问你需要点什么菜,这个时候你浏览了菜单上的菜,把想吃的菜告诉服务员,服务员把你点的菜拿到后台,后台根据你点的菜名,逐一完成,菜做完后叫服务员给你上菜,就这么一个场景其实和我们web开发