创建vue时,当template和el同时存在时,会将template中的东西替换el中的东西。
要对.vue文件进行封装处理就需要安装vue-loader和vue-template-compiler.
npm install vue-loader vue-template-compiler --save-dev
因为脚手架还没学到,现在这个形式好像是很接近脚手架的了。
App.vue
//模版样式
{{message}}
//js代码
//css样式
main.js
import Vue from "vue";
// import App from "./vue/app";
import App from "./vue/App";
// require("./css/back.css") commentJs的方式
import "./css/back.css";
new Vue({
el: "#app",
template: ` `, //之后替换app中的东西
components: {
App
}
})
Index.html
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
head>
<body>
<div id="app">
div>
<script src="./dist/bundle.js">script>
body>
html>
在webpack.config.js中添加
const path = require('path');
const webpack = require('webpack');
module.exports = {
...
plugins: [
new webpack.BannerPlugin('最终版权归大家所有')
]
}
即可在bundle.js开头添加声明。
不过应该不常用吧
因为发布时是发布dist里的文件,但是dist里没有index.html,因此需要将html也打包进去。
安装HtmlWebpackPlugin插件:npm install html-webpack-plugin --save-dev
要使用时在webpack.config.js文件中进行修改
const HtmlWebpackPlugin = require('html-webpack-plugin');
...
plugins: [
new HtmlWebpackPlugin({
template: 'index.html' //打包的模版
})
]
这时就会在dist文件中生成一个index.html
我在使用的时候出了点问题,安装htmlwebpackplugin安不上。可以这样解决:
- 清缓存:
npm cache clean --force
- 重新安装:
npm install html-webpack-plugin --save-dev
便于加快开发进度,在浏览器中刷新自动更新,就是热加载功能。
安装
npm install --save-dev webpack-dev-server@2.9.1
//因为和之前安的vue2.x版本相对应
devserver作为webpack的一个选项,有以下属性可以设置:
将webpack.config.js中添加:
devServer: {
contentBase: './dist',
inline: true
}
同时为了在方便使用,在package.json中添加
"scripts": {
...
"dev": "webpack-dev-server --open"
},
runtime-compiler:template -> ast(抽象语法树) -> render -> vitual dom -> UI
new Vue({
el: '#app',
template: ' ',
components: {App}
})
runtime-only:render -> vitual Dom -> UI
性能高,代码量少
new Vue({
el: '#app',
render: h => h(App),
//render: function (h) {
// return h(App)
//}
})
输入vue create projectname
.browserslistrc =>浏览器相关支持情况
.babel.config.js =>ES语法转换
也可以使用vue ui
来网页创建和管理
//1、function
const aaa = function () {
}
//2、对象字面量中定义函数
const obj = {
bbb() {
}
}
//3、ES6中的箭头函数
const ccc = (参数列表) => {
}
//若一个参数时小括号可以省略
//返回值若只有一行时可以直接写
const ddd = (num1, num2) => num1 * num2
//箭头函数的this是一层一层往外找的
//将url压入栈结构
location.hash='url地址'
history.pushState({},'','url地址')
history.back()
history.forward()
//等同
history.go(前进或后退的地址数:例如-1,1)
router/index.js
//相关配置
import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'
//1、安装插件
Vue.use(VueRouter)
//2、创建VueRouter对象
const routes = [
]
const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
//配置路由和组件间的应用关系
routes
})
//3、将router对象传入vue实例中
export default router
//4、在main.js中进行挂载
new Vue({
router,
render: h => h(App)
}).$mount('#app')
//index.js
import About from '../components/About.vue'
const routes = [
{
//点开默认显示的组件
path: '/',
name: 'Home',
component: Home
},
{
path: '/',
name: 'Home',
//点开默认显示的组件,同时地址栏显示
redirect: Home
},
{
path: '/about',
name: 'About',
component: About
}
]
//占位
或者想自己定义函数来跳转
//index.js
{
//当之后那个组件要获取时就是获取:后面的值
path: '/user/:aaa',
name: 'user',
component: user
}
user
{{aaa}}
//或是这样直接获取
{{$route.params.aaa}}
const Home = () => import('../components/Home')
const routes = [
{
path: '/',
name: 'Home',
component: Home
// 或是直接component: () => import('../components/Home')
},
创建子组件
在父组件中定义位置
<div>
<h1>Homeh1>
<router-link to="/news">newsrouter-link>
<router-view>router-view>
div>
在路由中定义
const HomeNews = () => import('../components/HomeNews')
const routes = [
{
path: '/',
name: 'Home',
component: Home,
children: [
{
//若要让其默认显示news子组件时的默认路径
path: '',
redirect: 'news'
},
{
path: 'news',
component: HomeNews,
}
]
},
]
主要参考这个教学视频学习:https://www.bilibili.com/video/BV15741177Eh?p=1