@kungfuboy
2016-07-02T03:23:19.000000Z
字数 1655
阅读 1065
工具
前几天脑洞大开,想着能不能在Github Pages上布置一个基于React的SPA,哇,想想就很酷。
然而经过两天的折腾,发现太难了,解析.md文件就是个重要的问题,Github Pages官方的Jekyll引擎似乎是事先将.md格式的文件转化为.html,不知道在哪个角落猫着,需要的时候再拿出来。
如果我要建立自己的.md解析机制,那……我的时间都花在建立博客网站上了,博客还写不写了?在这等衡量下,决定不再深究了,就用自己已经掌握的知识开干……做出来再说!
于是想到,能不能用单页面和传统页面结合的方式?好吧,听起来是有点怪,但体验上,至少应该会比传统页面要好一些吧……
磨刀不误砍柴功,事先花时间搭建好开发环境是很值得的,由于我的博客是由SPA和传统页面相结合,思虑再三,我还是决定把两个开发环境分开——用Gulp开发传统页面,用Webpack开发SPA。
理由很简单,在传统页面上,模板渲染Jekyll已经做好了,只需要按照它的规则书写即可,主要的开发工作应该是在页面样式上,也就是css代码,那么gulp的主要工作就是转换sass了。至于Webpack,是用来打包组件的,虽然可以写在一起,但我可不想转换个sass就需要把react组件给打包一次,那太浪费时间。
先配置SPA这边吧,准确来说是Webpack + react + material-ui + babel
npm init# 一路Enternpm install --save-dev webpack# 安装webpacknpm install --save react react-dom react-router react-tap-event-plugin material-ui# 生产用的 React 与 Material-UI 部分npm install --save-dev babel-core babel-loader# Babel转换器的核心部分npm install --save-dev babel-preset-es2015 babel-preset-react babel-preset-stage-1# Babel转换器的三个额外配置vim .babelrc# 新建文件,写入以下内容---{"presets": ["es2015","react","stage-1"],"plugins": []}---vim webpack.config.js# 新建文件,写入以下内容---var path = require('path');module.exports = {entry: './index.jsx',output: {path: path.join(__dirname, '/dist'),filename: 'bundle.js'},resolve: {extensions: ['', '.js', '.jsx']},module: {loaders: [{ test: /\.jsx?$/, loaders: ['babel'] }]}}---vim package.json# 更改scripts域---"scripts": {"build": "webpack","build-dev": "webpack -w -d"}---vim index.jsx# 编写入口文件---import React from 'react';import ReactDOM from 'react-dom';import { Router, Route, IndexRoute, hashHistory } from "react-router"import routes from './src/routes'ReactDOM.render(<Router history={hashHistory}>{routes}</Router>,document.getElementById('container'));---
npm i -D gulp gulp-autoprefixer browser-sync gulp-sass