在webpack.config.js
中配置
module: { // 配置所有第三方loader 模块的
rules: [ // 第三方模块的匹配规则
{ test: /\.css$/, use: ['style-loader', 'css-loader'] }, // 处理 CSS 文件的 loader
{ test: /\.less$/, use: ['style-loader', 'css-loader', 'less-loader'] }, // 处理 less 文件的 loader
{ test: /\.scss$/, use: ['style-loader', 'css-loader', 'sass-loader'] }, // 处理 scss 文件的 loader
{ test: /\.(jpg|png|gif|bmp|jpeg)$/, use: 'url-loader?limit=7631&name=[hash:8]-[name].[ext]' }, // 处理 图片路径的 loader
// limit 给定的值,是图片的大小,单位是 byte, 如果我们引用的 图片,大于或等于给定的 limit值,则不会被转为base64格式的字符串, 如果 图片小于给定的 limit 值,则会被转为 base64的字符串
{ test: /\.(ttf|eot|svg|woff|woff2)$/, use: 'url-loader' }, // 处理 字体文件的 loader
{ test: /\.js$/, use: 'babel-loader', exclude: /node_modules/ }, // 配置 Babel 来转换高级的ES语法
{ test:/\.vue$/, use: 'vue-loader' }// 加载vue
]
}
<body>
<div id="app">
<p>444444p>
div>
<script>
var login = {
template: '这是登录组件
'
}
// 创建 Vue 实例,得到 ViewModel
var vm = new Vue({
el: '#app',
data: {},
methods: {},
render: function (createElements) { // createElements 是一个 方法,调用它,能够把 指定的 组件模板,渲染为 html 结构
return createElements(login)
// 注意:这里 return 的结果,会 替换页面中 el 指定的那个 容器
}
});
script>
body>
注:会替换整个页面的内容
// 导入vue
import Vue from 'vue'
// 导入 login 组件
import login from './login.vue'
var vm = new Vue({
el: '#app',
data: {
msg: '123'
},
// components: { 在webpack中,这种能方式已经不能够使用
// login
// }
/* render: function (createElements) { // 在 webpack 中,如果想要通过 vue, 把一个组件放到页面中去展示,vm 实例中的 render 函数可以实现
return createElements(login)
} */
// 简写
render: c => c(login)
})
cnpm i vue -S
webpack
中,推荐使用.vue
这个组件模板文件定义组件,所以,需要安装 能解析这种文件的 loader : cnpm i vue-loader vue-template-complier -D
main.js
中,导入 vue
模块 import Vue from 'vue'
// 在webpack 中尝试使用 Vue:
// 注意: 在 webpack 中, 使用 import Vue from 'vue' 导入的 Vue 构造函数,功能不完整,只提供了 runtime-only 的方式,并没有提供 像网页中那样的使用方式;
import Vue from 'vue'
上面这种方式时,需要在 webpack.config.js 的 module.exports 中添加
resolve: {
alias: { // 修改 Vue 被导入时候的包的路径
// "vue$": "vue/dist/vue.js"
}
}
// 或则使用以下方式直接导入包
import Vue from '../node_modules/vue/dist/vue.js'
.vue
结尾的组件,其中,组件有三部分组成: template 、script 、style
template:主要写html页面模板
script:永固处理业务逻辑
style:用于控制样式
1. scoped属性:使用scoped标签只控制自己组件的样式
2. lang属性: 普通的 style 标签只支持 普通的 样式,如果想要启用 scss 或 less ,需要为 style 元素,设置 lang 属性,如:lang=“scss”
import login from './login.vue'
导入这个组件var vm = new Vue({ el: '#app', render: c => c(login) })
id
为 app
的 div
元素,作为我们 vm
实例要控制的区域;安装vue-router
命令:
npm install vue-router
使用:
import Vue from 'vue'
// 1. 导入 vue-router 包
import VueRouter from 'vue-router'
// 2. 手动安装 VueRouter
Vue.use(VueRouter)
// 导入 app 组件
import app from './App.vue'
// 导入 Account 组件
import account from './main/Account.vue'
import goodslist from './main/GoodsList.vue'
// 3. 创建路由对象
var router = new VueRouter({
routes: [
// account goodslist
{ path: '/account', component: account },
{ path: '/goodslist', component: goodslist }
]
})
var vm = new Vue({
el: '#app',
render: c => c(app), // render 会把 el 指定的容器中,所有的内容都清空覆盖,所以 不要 把 路由的 router-view 和 router-link 直接写到 el 所控制的元素中
router // 4. 将路由对象挂载到 vm 上
})
在App.vue中:
这是 App 组件
Account
Goodslist
讲路由相关的抽离出以关新的js文件
import VueRouter from 'vue-router'
// 导入 Account 组件
import account from './main/Account.vue'
import goodslist from './main/GoodsList.vue'
// 导入Account的两个子组件
import login from './subcom/login.vue'
import register from './subcom/register.vue'
// 3. 创建路由对象
var router = new VueRouter({
routes: [
// account goodslist
{
path: '/account',
component: account,
children: [
{ path: 'login', component: login },
{ path: 'register', component: register }
]
},
{ path: '/goodslist', component: goodslist }
]
})
// 把路由对象暴露出去
export default router
在 ES6中,也通过 规范的形式,规定了 ES6 中如何 导入 和 导出 模块
ES6中导入模块,使用 import 模块名称 from ‘模块标识符’ import ‘表示路径’
在 ES6 中,使用 export default 和 export 向外暴露成员:
var info = {
name: 'zs',
age: 20
}
export default info
export var title = '小星星'
export var content = '哈哈哈'
// 导入:
import m222, { title as title123, content } from './test.js'
console.log(m222)
console.log(title123 + ' --- ' + content)
注意: