1. 安装elementui 和sass
npm i element-ui -S
npm install --save-dev sass-loader
npm install --save-dev node-sass
2. 在build文件夹下的webpack.base.conf.js的rules里面添加配置
{
test: /\.sass$/,
loaders: ['style', 'css', 'sass']
}
3. 安装elementui的自定义主题工具
npm i element-theme -g
npm i element-theme-chalk -D
4. 初始化变量文件
et -i element-variables.scss
5.这时根目录下会产生element-variables.scss
6.编译主题
更改primary的值, 命令行输入et
7.编译完成之后在主目录下生成theme的文件夹(此文件下的fonts以后有用)
8.在main.js的入口文件中引入
import '../theme/index.css'
9.使用gulp-css-wrap神器
npm install gulp
npm install gulp-clean-css
npm install gulp-css-wrap
10.在项目根目录下创建一个名为 gulpfile.js 的文件
// gulpfile.js
var path = require('path')
var gulp = require('gulp')
var cleanCSS = require('gulp-clean-css')
var cssWrap = require('gulp-css-wrap')
gulp.task('css-wrap', function () {
return gulp.src(path.resolve('./theme/index.css'))
/* 找需要添加命名空间的css文件,支持正则表达式 */
.pipe(cssWrap({
selector: '.custom-02abfd' /* 添加的命名空间 */
}))
.pipe(cleanCSS())
.pipe(gulp.dest('src/assets/css/theme/02abfd')) /* 存放的目录 */
})
custom-02abfd中的02abfd即为刚才生成自定义主题时的颜色
11.执行gulp输出
gulp css-wrap
12.生成theme文件夹下的主题名称
此时文件夹下没有fonts文件夹,把生成主题时生成的fonts复制到此处即可
13.建立store文件存储主题状态
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
state:{
themecolor:'20a0ff'//默认为20a0ff
},
mutations:{
//更新主题颜色
setThemeColor(state,curcolor){
this.state.themecolor = curcolor;
}
}
});
export default store;
在main.js入口文件中引用
import store from './vuex/store.js';
import './assets/css/theme/02abfd/index.css';
14.在颜色切换页面
Element-UI 饿了么推出的基于Vue.js的桌面端UI框架。 手机端 Mint UI。
vue init webpack project-name //创建一个基于webpack模板的名为project-name的项目
可以的模板有:
browserify–全功能的Browserify + vueify,包括热加载,静态检测,单元测试。
browserify-simple–一个简易的Browserify + vueify,以便于快速开始。
webpack–全功能的Webpack + vueify,包括热加载,静态检测,单元测试。
webpack-simple–一个简易的Webpack + vueify,以便于快速开始。
?所谓vueify,就是使用.vue格式的文件定义组件,一个.vue文件就是一个组件
npm install 安装项目依赖
npm run dev 运行项目
vue cli是Vue.js官方提供的命令行创建Vue.js项目脚手架的工具。
基于vue cli和browserify的项目模板
基于vue cli和webpack的项目模板
简单模式和安全模式
简单模式仅包含Vue.js开发必要的一些资源和包,可以快速开发。
完全漠视包括ESLink, 单元测试等。
Browserify是CommonJS风格的模块及依赖管理工具, 它不仅是一个打包工具,更关键的是其JavaScript的模块及依赖管理能力。
Browserify 使用 require()来引入其他模块, 使用module.exports来导出模块。
http://browserify.org/
vueify ,使用 .vue格式的文件定义组件, 一个.vue文件就是一个组件。
.vue文件定义的组件内容包括3部分:
1. <style></style>标签: 定义组件样式
2. <template></template>标签:定义组件模板
3. <script></script>标签:定义组件的各种选项,比如data, methods等。
hello.vue 定义组件:
// app.vue
<
<style>
.red {
color: #f00;
}
<
</style>
<
<template>
<h1 class="red">{{msg}}</h1>
<
</template>
<
<script>
e
export default {
data () {
return {
msg: 'Hello world!'
}
}
}
}
<
</script>
在组件文件中使用预处理语言:
// app.vue
<
<style lang="stylus">
.
.red
color #f00
<
</style>
<
<template lang="jade">
h
h1(class="red") {{msg}}
<
</template>
<
<script lang="coffee">
m
module.exports =
data: ->
msg: 'Hello world!'
<
</script>
package.json - 项目配置文件, 包含的重要信息有:
dependencies:项目发布时的依赖
devDependencies:项目开发时的依赖
scripts:编译项目的一些命令
.babelrc 定义了ES6的转码规则,基于ES6编写的js代码在编译时都会被babel转码器转换为ES5代码。
为什么要将ES6转换为ES5呢?因为我们将使用ES6的一些语法来编写.vue组件,而有些浏览器目前还没有全面支持ES6。
{
"presets": ["es2015", "stage-2"],
"plugins": ["transform-runtime"]
}
}
babel是一个非常有名的ES6转码器,babel主页:https://babeljs.io/。
npm install 安装项目依赖, 安装的依赖位于 node_modules 文件夹中。
执行npm run dev 之后, dist 目录会产生一个 build.js 文件。
"scripts": {
"watchify": "watchify -vd -p browserify-hmr -e src/main.js -o dist/build.js",
"serve": "http-server -c 1 -a localhost",
"dev": "npm-run-all --parallel watchify serve"
}
}
dev命令依赖于watchify,编译 src/main.js 输出到 dist/build.js
http-server 是一个简易的Web服务器。
http://images2015.cnblogs.com/blog/341820/201607/341820-20160716184717545-22817188.png
watchify是什么东东呢?browserify的编译是比较缓慢的,当一个browserify项目开始变大时,编译打包的时间会变得较长。watchify是一个browserify的封装,其在package.json中的配置和browserify是一样的。它可以持续件监视文件的改动,并且只重新打包必要的文件。在一个大型的项目中使用watchify,第一次打包的时候可能还会花较长时间,但是后续的编译打包将消耗较短的时间。
https://github.com/substack/watchify/
npm run build 生成发布时的build.js
uglifyjs是基于nodejs的压缩程序,用于压缩HTML/CSS/JS,执行npm run build命令后生成的build.js就是经过压缩的。
simple-browserify模板用于构筑基于browserify和vueify的开发环境,browserify模板则提供了更多内容:
提供了ESLint:用于格式化JavaScript和检查JavaScript代码风格。
提供了单元测试:使用PhantomJS with Karma + karma-jasmine + karma-browserify的单元测试, 支持ES2015和mock。
import Vue from 'vue'
从node_modules文件夹下寻找vue.js
import App from './App.vue'?表示引入同目录下的App.vue组件。
import Hello from './components/Hello.vue'?表示引入components目录下的Hello.vue组件
Hello.vue是App.vue的子组件:
前端构建工具:
Grunt: 老旧
Gulp https://gulpjs.com/
Webpack
- 引入篇
- 基础篇
- 快速入手
- 名词解释
- Vue语法
- Vue安装
- Vue实例
- 模板语法
- 计算属性和侦听器
- Class与Style绑定
- 条件渲染
- 列表渲染
- 事件处理
- 表单输入绑定
- 组件基础
- 进阶篇
- 常用模块
- 单文件组件
- 快速学会Vue Router路由
- Vue Route 进阶使用
- Vuex 与状态管理
- Axios
- Mock.js
- data数据显示在页面
- Vue生命周期
- Vue按需加载组件
- 国际化
- 页面加载进度条 -NProgress
- 自定义主题颜色
- 开发篇
- Vue入门——创建并运行一个Vue项目
- Vue + Element UI 项目创建
- 使用Vue ui项目创建工具在网页中创建Vue项目
- Vue项目创建入门实例
- Vue CLI
- 创建项目
- 使用Visual Studio Code 开发Vue项目
- 高级篇
- 组件深入
- Vue+Element
- Vue + ElementUI 主题颜色切换
- 工具篇
- 在线代码编辑器
- 开发工具(IDE,集成开发环境)
- npm(JavaScript包管理工具)介绍
- Node.js(npm)在Windows下安装
- webpack介绍
- webpack快速实例
- webpack
- 快速入门实例
- 安装
- 概念
- Nodejs
- 基础
- npm
- 命令参考
- 命令
- 模块安装
- Babel
- 问题解决篇
- ERROR Failed to get response from https://registry.yarnpkg.com/vue-cli-version -marker
- Vue常见问题
- You are using the runtime-only build of Vue where the template compiler is not
- yarn 报unable to get local issuer certificate
- yarn There appears to be trouble with your network connection. Retrying
- Expected Boolean, got String with value "true".
- 项目篇
- 项目创建
- 项目设计
- 页面
- 开发问题
- 后端
- Spring Boot + Activiti 工作流框架搭建之一
- Spring Boot + Activiti 工作流框架搭建之二
- 工作流
- Java流程框架
- Activiti
- 页面风格
- green
- blue
- orange
- 参考篇
- 好的Git项目
- Vue的在线js
- 指令
- 开发说明
- JavaScript 高级
- export和import
- JS模块化规范对比以及在Node.js的实现
- Storage
- ES2015
- scss
- CSS、Sass、SCSS