# Vue.js

## 注意:

有时候使用`npm i node-sass -D`装不上,这时候,就必须使用 `cnpm i node-sass -D`

## 在普通页面中使用render函数渲染组件

## 在webpack中配置.vue组件页面的解析

1. 运行`cnpm i vue -S`将vue安装为运行依赖;

2. 运行`cnpm i vue-loader vue-template-compiler -D`将解析转换vue的包安装为开发依赖;

3. 运行`cnpm i style-loader css-loader -D`将解析转换CSS的包安装为开发依赖,因为.vue文件中会写CSS样式;

4. 在`webpack.config.js`中,添加如下`module`规则:

```

module: {

rules: [

{ test: /\.css$/, use: ['style-loader', 'css-loader'] },

{ test: /\.vue$/, use: 'vue-loader' }

]

}

```

5. 创建`App.js`组件页面:

```

<template>

<!-- 注意:在 .vue 的组件中,template 中必须有且只有唯一的根元素进行包裹,一般都用 div 当作唯一的根元素 -->

<div>

<h1>这是APP组件 - {{msg}}</h1>

<h3>我是h3</h3>

</div>

</template>

<script>

// 注意:在 .vue 的组件中,通过 script 标签来定义组件的行为,需要使用 ES6 中提供的 export default 方式,导出一个vue实例对象

export default {

data() {

return {

msg: 'OK'

}

}

}

</script>

<style scoped>

h1 {

color: red;

}

</style>

```

6. 创建`main.js`入口文件:

```

// 导入 Vue 组件

import Vue from 'vue'

// 导入 App组件

import App from './components/App.vue'

// 创建一个 Vue 实例,使用 render 函数,渲染指定的组件

var vm = new Vue({

el: '#app',

render: c => c(App)

});

```

## 在使用webpack构建的Vue项目中使用模板对象?

1. 在`webpack.config.js`中添加`resolve`属性:

```

resolve: {

alias: {

'vue$': 'vue/dist/vue.esm.js'

}

}

```

## ES6中语法使用总结

1. 使用 `export default` 和 `export` 导出模块中的成员; 对应ES5中的 `module.exports` 和 `export`

2. 使用 `import ** from **` 和 `import '路径'` 还有 `import {a, b} from '模块标识'` 导入其他模块

3. 使用箭头函数:`(a, b)=> { return a-b; }`

## 在vue组件页面中,集成vue-router路由模块

[vue-router官网](https://router.vuejs.org/)

1. 导入路由模块:

```

import VueRouter from 'vue-router'

```

2. 安装路由模块:

```

Vue.use(VueRouter);

```

3. 导入需要展示的组件:

```

import login from './components/account/login.vue'

import register from './components/account/register.vue'

```

4. 创建路由对象:

```

var router = new VueRouter({

routes: [

{ path: '/', redirect: '/login' },

{ path: '/login', component: login },

{ path: '/register', component: register }

]

});

```

5. 将路由对象,挂载到 Vue 实例上:

```

var vm = new Vue({

el: '#app',

// render: c => { return c(App) }

render(c) {

return c(App);

},

router // 将路由对象,挂载到 Vue 实例上

});

```

6. 改造App.vue组件,在 template 中,添加`router-link`和`router-view`:

```

<router-link to="/login">登录</router-link>

<router-link to="/register">注册</router-link>

<router-view></router-view>

```

## 组件中的css作用域问题

## 抽离路由为单独的模块

## 使用 饿了么的 MintUI 组件

[Github 仓储地址](https://github.com/ElemeFE/mint-ui)

[Mint-UI官方文档](http://mint-ui.github.io/#!/zh-cn)

1. 导入所有MintUI组件:

```

import MintUI from 'mint-ui'

```

2. 导入样式表:

```

import 'mint-ui/lib/style.css'

```

3. 在 vue 中使用 MintUI:

```

Vue.use(MintUI)

```

4. 使用的例子:

```

<mt-button type="primary" size="large">primary</mt-button>

```

## 使用 MUI 组件

[官网首页](http://dev.dcloud.net.cn/mui/)

[文档地址](http://dev.dcloud.net.cn/mui/ui/)

1. 导入 MUI 的样式表:

```

import '../lib/mui/css/mui.min.css'

```

2. 在`webpack.config.js`中添加新的loader规则:

```

{ test: /\.(png|jpg|gif|ttf)$/, use: 'url-loader' }

```

3. 根据官方提供的文档和example,尝试使用相关的组件

## 将项目源码托管到oschina中

1. 点击头像 -> 修改资料 -> SSH公钥 [如何生成SSH公钥](http://git.mydoc.io/?t=154712)

2. 创建自己的空仓储,使用 `git config --global user.name "用户名"` 和 `git config --global user.email ***@**.com` 来全局配置提交时用户的名称和邮箱

3. 使用 `git init` 在本地初始化项目

4. 使用 `touch README.md` 和 `touch .gitignore` 来创建项目的说明文件和忽略文件;

5. 使用 `git add .` 将所有文件托管到 git 中

6. 使用 `git commit -m "init project"` 将项目进行本地提交

7. 使用 `git remote add origin 仓储地址`将本地项目和远程仓储连接,并使用origin最为远程仓储的别名

8. 使用 `git push -u origin master` 将本地代码push到仓储中

## App.vue 组件的基本设置

1. 头部的固定导航栏使用 `Mint-UI` 的 `Header` 组件;

2. 底部的页签使用 `mui` 的 `tabbar`;

3. 购物车的图标,使用 `icons-extra` 中的 `mui-icon-extra mui-icon-extra-cart`,同时,应该把其依赖的字体图标文件 `mui-icons-extra.ttf`,复制到 `fonts` 目录下!

4. 将底部的页签,改造成 `router-link` 来实现单页面的切换;

5. Tab Bar 路由激活时候设置高亮的两种方式:

+ 全局设置样式如下:

```

.router-link-active{

color:#007aff !important;

}

```

+ 或者在 `new VueRouter` 的时候,通过 `linkActiveClass` 来指定高亮的类:

```

// 创建路由对象

var router = new VueRouter({

routes: [

{ path: '/', redirect: '/home' }

],

linkActiveClass: 'mui-active'

});

```

## 实现 tabbar 页签不同组件页面的切换

1. 将 tabbar 改造成 `router-link` 形式,并指定每个连接的 `to` 属性;

2. 在入口文件中导入需要展示的组件,并创建路由对象:

```

// 导入需要展示的组件

import Home from './components/home/home.vue'

import Member from './components/member/member.vue'

import Shopcar from './components/shopcar/shopcar.vue'

import Search from './components/search/search.vue'

// 创建路由对象

var router = new VueRouter({

routes: [

{ path: '/', redirect: '/home' },

{ path: '/home', component: Home },

{ path: '/member', component: Member },

{ path: '/shopcar', component: Shopcar },

{ path: '/search', component: Search }

],

linkActiveClass: 'mui-active'

});

```

## 使用 mt-swipe 轮播图组件

1. 假数据:

```

lunbo: [

'http://www.itcast.cn/images/slidead/BEIJING/2017440109442800.jpg',

'http://www.itcast.cn/images/slidead/BEIJING/2017511009514700.jpg',

'http://www.itcast.cn/images/slidead/BEIJING/2017421414422600.jpg'

]

```

2. 引入轮播图组件:

```

<!-- Mint-UI 轮播图组件 -->

<div class="home-swipe">

<mt-swipe :auto="4000">

<mt-swipe-item v-for="(item, i) in lunbo" :key="i">

<img :src="item" alt="">

</mt-swipe-item>

</mt-swipe>

</div>

</div>

```

## 在`.vue`组件中使用`vue-resource`获取数据

1. 运行`cnpm i vue-resource -S`安装模块

2. 导入 vue-resource 组件

```

import VueResource from 'vue-resource'

```

3. 在vue中使用 vue-resource 组件

```

Vue.use(VueResource);

```

{
"name": "itestingweb",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "webpack --mode development",
"build": "webpack --mode production",
"start2": "webpack-dev-server --open --port 3000 --contentBase src --hot",
"start": "webpack-dev-server --open --mode development"
},
"author": "",
"license": "ISC",
"dependencies": {
"bootstrap": "^4.1.3",
"jquery": "^3.3.1",
"popper.js": "^1.14.4",
"vue": "^2.5.17"
},
"devDependencies": {
"babel-core": "^6.26.3",
"babel-loader": "^7.1.5",
"babel-plugin-transform-runtime": "^6.23.0",
"babel-preset-env": "^1.7.0",
"babel-preset-stage-0": "^6.24.1",
"clean-webpack-plugin": "^0.1.19",
"css-loader": "^1.0.0",
"file-loader": "^1.1.11",
"html-webpack-plugin": "^3.2.0",
"less": "^3.8.0",
"less-loader": "^4.1.0",
"node-sass": "^4.9.2",
"sass-loader": "^7.1.0",
"style-loader": "^0.21.0",
"url-loader": "^1.0.1",
"vue-loader": "^15.2.6",
"vue-router": "^3.0.1",
"vue-template-compiler": "^2.5.17",
"webpack": "^4.16.4",
"webpack-cli": "^3.1.0",
"webpack-dev-server": "^3.1.5"
}
}

webpack 4.X 与 Vue 2.X结合的更多相关文章

  1. 深入浅出的webpack构建工具--webpack4+vue搭建环境 (十三)

    深入浅出的webpack构建工具--webpack4+vue搭建环境 (十三) 从上面一系列的webpack配置的学习,我们现在来使用webpack来搭建vue的开发环境.首先我们来设想下我们的项目的 ...

  2. 如何在webpack开发中利用vue框架使用ES6中提供的新语法

    在webpack中开发,会遇到一大推问题,特别是babel6升级到babel7,要跟新一大推插件,而对于安装babel的功能就是在webpack开发中,vue中能够是用ES6的新特性: 例如ES6中的 ...

  3. webpack(8)vue组件化开发的演变过程

    前言 真实项目开发过程中,我们都是使用组件化的去开发vue的项目,但是组件化的思想又是如何来的呢?下面就从开始讲解演变过程 演变过程1.0 一般情况下vue都是单页面开发,所以项目中只会有一个inde ...

  4. webpack+vue-loader 在单独.vue组件中使用sass-loader编译sass报错问题not a valid Win32 applictation

        如果webpack配置没有问题,在vue文件中编译sass/scss报上面的错误,大概是由于node-sass安装失败,重新卸载安装,   在国内安装node-sass失败的话,可以使用淘宝镜 ...

  5. webpack 构建简单的vue项目

    ---恢复内容开始--- webpack主要执行流程: 入口→loader处理→出口 // webpack.config.js 文件:const path = require('path') // 引 ...

  6. 使用webpack打包后的vue项目如何运行(express)

    我们知道使用webpack打包vue项目后会生成一个dist文件夹,dist文件夹下有html文件和其他css.js以及图片等,那么打包后的文件该如何正确运行呢? 倘若直接打开html文件,会报如下错 ...

  7. element-ui和npm、webpack、vue-cli搭建Vue项目

    一.element-ui的简单使用 1.安装 1. npm 安装 推荐使用 npm 的方式安装,它能更好地和 webpack 打包工具配合使用. npm i element-ui -S 2. CDN ...

  8. babel 7.x 和 webpack 4.x 配置vue项目

    很偶然的今天想开个自己的小项目,记录一下最近项目工程上实现的一个小交互.按照之前运行非常流畅的配置走一遍,打包遇到各种坑.只好根据命令行的报错逐个排查,发现babel升级了一个大版本,已经到7.x了. ...

  9. webpack中如何使用vue

    1.安装 vue包:npm i vue -S 2.由于在webpack中,推荐使用.vue这个组件模版文件来定义组件,不然会出现vue.js移动和一些高级语法的不支持,因此需要安装能解析这种文件的lo ...

随机推荐

  1. 剑指offer-扑克牌顺子

    题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决 ...

  2. service order

    1: SRVO Service Order         compress: 本地部署,客户能够看到后台代码,transaction type,改代码等.   SVO1 Service Order  ...

  3. vghyj

    2017*****1012:我是康迪:我的爱好是计算机:我的码云个人主页是:https://gitee.com/kdkdkdkd我的第一个项目地址是:https://gitee.com/kdkdkdk ...

  4. Scala中 zip或者zipWithIndex的用法

    问题:你要遍历一个有序集合,同时你又想访问一个循环计数器,但最重要的是你真的不需要手动创建这个计数器.解决方案:    使用zipWithIndex或者zip方法来自动地创建一个计数器,假设你有一个有 ...

  5. 时间、日历(time、calendar、datatime)

    import time import calendar import datatime #获取代码运行的时间差 start = time.time() end = time.time() print( ...

  6. 2019-oo-第一次总结

    一.度量分析程序结构 1.UML类图分析 1.1第一次作业         1.2第二次作业 1.3第三次作业   1.4总结 从UML类图三次作业的可以看出,我从一个类到逐渐利用多个类,代码结构在不 ...

  7. 全志A33驱动GT911触摸屏

    0x00 环境说明: 所使用的开发板为锐尔威视的插针版A33_Vstar 触摸屏驱动IC为GT911 接线参照开发板的TP线路 0x01 修改系统配置文件: 笔者所使用的A33开发板的系统配置文件路径 ...

  8. 灵雀云:etcd 集群运维实践

    [编者的话]etcd 是 Kubernetes 集群的数据核心,最严重的情况是,当 etcd 出问题彻底无法恢复的时候,解决问题的办法可能只有重新搭建一个环境.因此围绕 etcd 相关的运维知识就比较 ...

  9. RocketMQ基本概念

    RocketMQ基本概念 一.生产者 生产者发送业务系统产生的消息给broker.RocketMQ提供了多种发送方式:同步的.异步的.单向的. 1.1 生产者组 具有相同角色的生产者被分到一组.假如原 ...

  10. 03-python3.5-模拟购物车流程--更新追加细节注释功能

    03-python3.5-模拟购物车流程--更新追加细节注释功能: 模拟购物车更新脚本: #!/usr/bin/env python #-*- coding: utf-8 -*- #__author_ ...