# 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. python tkinter entry

    """小白随笔,大佬勿喷""" '''Entry编辑框 收集数据''' import tkinter as tk import tkinte ...

  2. 使用@Autowired时,取值为null

    如果取不到,可以考虑其他方式 场景: @Autowired private StringRedisTemplate redisTemplate; 想使用redisTemplate,但是使用时为null ...

  3. linux 几种服务类型

    采集来自于 https://blog.csdn.net/hguisu/article/details/7453390 https://blog.csdn.net/limo120621/article/ ...

  4. ubuntu安装zabbix 3.2(转)

    转自:http://www.zabbix.org.cn/viewtopic.php?f=13&t=1096本人略做了写修改. 准备工作 apt-get update apt-get upgra ...

  5. iphone X 底部留白 之 ionic3 项目

       在全局css中加入   @media only screen and (device-width: 375px) and (device-height: 812px) and (-webkit- ...

  6. 干货 | LIDAR、ToF相机、双目相机如何科学选择?

    点击"计算机视觉life"关注,置顶更快接收消息! 本文阅读时间约5分钟 本文翻译自卡内基梅隆大学 Chris asteroid 三维视觉技术的选择 传感器参数及定义 LIDAR ...

  7. 远程Gitlab新建的分支在IDEA里不显示

    cmd命令打开dos命令窗口,进入项目文件所在目录 (**TIPS:在资源管理器的地址栏里直接输入cmd,就会打开命令窗口,并且此时命令窗口显示的路径就是当前路径)git branch -a:可以查看 ...

  8. 用html5实现音频播放器

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  9. Linux系统——MHA-Atlas-MySQL高可用集群

    Linux系统——MHA-Atlas-MySQL高可用集群 MHA MHA介绍MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,是一套优秀的 ...

  10. hadoop启动namenode日志报这个错,首先说怎么看日志

    hadoop启动namenode日志报这个错,首先说怎么看日志, 启动namenode会有这个,ubuntu: starting namenode, logging to /home/xiaoye/h ...