1. 创建 demo 目录

  mkdir demo

2. 初始化应用

  npm init

  工程信息

  package name : tetris-class-demo

  version:

  description: tetris game

  entry point:

  test command:

  git repository:

  keywords:tetris, game

  author: zonehoo

  license: MIT

3.在 demo 下 创建 src , webpack 文件夹 .babelrc (编译代码配置)  index.html 文件 (入口页面)

  mkdir src webpack

  touch .babelrc  index.html

  webpack 文件夹下 创建 build.js (webpack 打包用)  develop.js (调试用)

  touch webpack/build.js  webpack/develop.js

  src 文件夹下 创建 index.js(js 入口文件)

  touch src/index.js

4. 编写 .babelrc

{

"presets": [

[

"env",

{

"targets": {

"browsers": ["last 2 versions","ie >= 10"]

},

"debug": false

}

]

],

"plugins": [

"transform-class-properties",

"transform-decorators-legacy",

[

"transform-react-jsx",

{

"pragma": "React.createElement"

}

],

[

"transform-runtime",

{

"helpers": true,

"polyfill": true,

"regenerator": true,

"moduleName": "babel-runtime"

}

]

]

}

5. 安装 webpack 和 babel 编译工具 并 添加 webpack 指令

  编写 package.json

  #package.json

{

"name": "tetris-class-demo",

"version": "1.0.0",

"description": "tetris game",

"main": "index.js",

"scripts": {

"start": "webpack-dev-server --config ./webpack/develop.js --hot --inline",

"build": "webpack --color --config ./webpack/build.js"

},

"keywords": [

"tetris",

"game"

],

"author": "zonehoo",

"license": "MIT",

"dependencies": {

"shortid": "^2.2.12",

"webpack-require-http": "^0.4.3"

},

"devDependencies": {

"babel-cli": "^6.26.0",

"babel-loader": "^7.1.5",

"babel-plugin-syntax-dynamic-import": "^6.18.0",

"babel-plugin-transform-class-properties": "^6.24.1",

"babel-plugin-transform-decorators-legacy": "^1.3.5",

"babel-plugin-transform-runtime": "^6.23.0",

"babel-preset-env": "^1.7.0",

"babel-preset-react": "^6.24.1",

"css-loader": "^1.0.0",

"html-webpack-plugin": "^3.2.0",

"less": "^3.7.1",

"less-loader": "^4.1.0",

"style-loader": "^0.21.0",

"svg-inline-loader": "^0.8.0",

"webpack": "^3.10.0",

"webpack-bundle-analyzer": "^2.13.1",

"webpack-cli": "^3.0.8",

"webpack-dev-server": "^2.11.2"

}

}

  安装拓展包

    npm install   

6. 编写 webpack/build.js 文件

var path = require('path')

var webpack = require('webpack')

var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin

var UglifyJSPlugin = webpack.optimize.UglifyJsPlugin

module.exports = {

entry: path.resolve(__dirname, '../src/index.js'),

output: {

path: path.resolve(__dirname, '../.package'),

filename: 'bundle.min.js'

},

externals: {

react: 'React',

'react-dom': 'ReactDOM'

},

module: {

rules: [

{

test: /\.jsx?$/,

exclude: /node_modules/,

use: [

'babel-loader'

]

},

{

test: /\.css$/,

exclude: /node_modules/,

loader: 'style-loader!css-loader'

},

{

test: /\.less$/,

exclude: /node_modules/,

loader: 'style-loader!css-loader!less-loader'

},

{

test: /\.svg$/,

loader: 'svg-inline-loader'

}

]

},

plugins: [

new UglifyJSPlugin({

mangle: {

// Skip mangling these

except: ['exports', 'require']

},

sourceMap: true

}),

new BundleAnalyzerPlugin({

analyzerMode: 'static',

reportFilename: 'BundleReportRelease.html',

logLevel: 'info'

})

]

}

8. 编写 webpack/develop.js

var path = require('path')

const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {

entry: path.resolve(__dirname, '../src/index.js'),

output: {

path: path.resolve(__dirname, './'),

filename: 'index.js',

publicPath: '/'

},

devtool: 'inline-source-map',

externals: {

react: 'React',

'react-dom': 'ReactDOM'

},

module: {

rules: [

{

test: /\.jsx?$/,

exclude: /node_modules/,

loader: 'babel-loader'

},

{

test: /\.css$/,

exclude: /node_modules/,

loader: 'style-loader!css-loader'

},

{

test: /\.less$/,

exclude: /node_modules/,

loader: 'style-loader!css-loader!less-loader'

},

{

test: /\.svg$/,

loader: 'svg-inline-loader'

}

]

},

plugins: [

new HtmlWebpackPlugin({

filename: 'index.html',

template: './index.html'

})

],

devServer: {

hot: true,

port: 9000

}

}

9 写首页 index.html

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<title>Demo</title>

<meta name="viewport" content="width=device-width, initial-scale=1">

</head>

<body>

<div id='app'></div>

</body>

</html>

10. 引入 MVC

  在 src 下 创建 view.js  controller.js model.js

    touch src/view.js src/controller.js src/model.js

  创建 游戏 运行 js tetris.js

    touch src/tetris.js

11. 编写 index.js

  alert(1);

12. 使用 npm start 并访问 127.0.0.1:9000 弹出1即可

  npm start






2. react 编程实践 俄罗斯方块-环境搭建的更多相关文章

  1. 1. react 编程实践 俄罗斯方块-需求分析

    1. 需求分析 俄罗斯方块的要素 界面展示 定时刷新 键盘响应 方块模型 游戏规则 俄罗斯方块 比 "电商购物车" 好在哪? 业务比较简单, 人人都了解, 不需要过多前置知识 技术 ...

  2. React Native IOS ---基础环境搭建(前端架构师)

    React Native -IOS 开发环境搭建 web架构(基础) 安装依赖 * 必须安装的依赖有:Node.Watchman 和 React Native 命令行工具以及 Xcode. npm 镜 ...

  3. 从零开始针对 .NET 应用的 DevOps 运营实践 - 运行环境搭建

    一.Overview 最近的一段时间,在公司里我都在进行基于 Jenkins 和 SonarQube 配合已有的 Gitlab 搭建部门的持续集成环境的工作,虽然之前有使用过 GitHub Actio ...

  4. 1. react 基础 简介 及 环境搭建

    一.简介 由 Facebook 推出 2013 年 开源 的 函数式编程的 使用人数最多的 前端框架 拥有健全的文档与完善的社区 ( 官网 ) react 16 称为 React Fiber ( 底层 ...

  5. 3D游戏编程大师技巧──环境搭建

    刚开微博,想借助这个平台与大家交流,写下自己的学习记录,希望得到大家的批评指正. 好了,进入主题.这段时间对游戏编程很感兴趣,于是在网友的推荐下开始学习<3D游戏编程大师技巧>这本书.今天 ...

  6. jni 入门 android的C编程之旅 --->环境搭建&&helloworld

    需要进行jni的开发有一下几个条件: 1:能初步使用C/C++如果不会,请参读 谭浩强的  C编程语言 2:android应用开发已经基本入门,如果没有,请先行学习 这两个条件基本满足后,我们开始了: ...

  7. React .js框架的环境搭建

    React学习笔记(一)- 环境搭建   最近在学习react相关的知识,刚刚起步,一路遇坑不断.自己做个笔记,方便日后总结,也供相同趣味的小伙伴一起交流探讨. 学习时主要参考官网的教程:https: ...

  8. Forward团队-爬虫豆瓣top250项目-团队编程项目开发环境搭建过程

    本次结对编程和团队项目我都需要用python环境,所以环境的搭建是一样的.(本文部分内容引用自己博客:http://www.cnblogs.com/xingyunqi/p/7527411.html) ...

  9. React.js学习之环境搭建

    1 工欲善其事必先利其器:前端开发工具 1.1 WebStorm和Sublime Text Sublime Text:作为代码编辑器,Sublime Text的优点如下: 主流前端开发编辑器 体积较小 ...

随机推荐

  1. POJ 1151:Atlantis 线段树+扫描线

    Atlantis Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 19374   Accepted: 7358 Descrip ...

  2. R apply()函数

    创建一个列表变量,它的第一个元素包含所有从0到9的平方数,第二个元素为10到19之内的所有平方数,依此类推,最后一个元素为90到99之内的平方数.没有平方数的元素也应该被包含在内! 学习网友的解题思路 ...

  3. 机器学习(ML)一之 Linear Regression

    一.线性回归 1.模型 2.损失函数 3.优化函数-梯度下降 #!/usr/bin/env python # coding: utf-8 import torch import time # init ...

  4. 063-PHP函数按地址传参,交换数值函数

    <?php function swap(&$x,&$y){ //定义交换数值函数 $temp=$x; $x=$y; $y=$temp; } $m=5; $n=15; echo & ...

  5. 4. Retrieving a mapper(检索映射器)

    Retrieving a mapper(检索映射器) 4.1. The Mappers factory(映射工厂) 可以通过 org.mapstruct.factory.Mappers 类检索映射器实 ...

  6. servlet 之 GenericServlet抽象类详解

    GenericSerlvet抽象类源码如下: package javax.servlet; import java.io.IOException; import java.util.Enumerati ...

  7. 第四篇Django之模板语言

    Django之模板语言 一 模板的执行 模板的创建过程,对于模板,其实就是读取模板(其中嵌套着模板的标签),然后将Model中获取的数据插入到模板中,最后将信息返回给用户 def current_da ...

  8. Nmap目录扫描和漏洞扫描(9.27 第十三天)

    目录扫描:扫描站点的目录,寻找敏感文件(目录名.探针文件.后台.robots.txt[].备份文件等) 目录:站点结构,权限控制不严格 探针文件:服务器配置信息,phpinfo.php   readm ...

  9. struts2 result随笔

     一.result:chain(从一个Action转发到另一个Action) chain结果类型有4个属性,分别是: actionName (default) - the name of the ac ...

  10. Vue点击按钮下载对应图片

    最近有用到点击某个按钮 自动下载对应图片,可是对于浏览器不同的问题,会有‘个别’浏览器出现不能下载的或者下载的效果不同等的问题, 可以直接用创建canvas方法: 定义图片地址Img: "w ...