博客主页:@丘比特惩罚陆
欢迎关注:点赞收藏⭐留言✒
系列专栏:web前端、嵌入式、笔记专栏
加入社区: 丘比特惩罚陆
人生格言:选对方向,每走一步都是进步!
✒️欢迎大佬指正,一起学习!一起加油!希望大家能小手一动,帮忙点个赞!
资源邮箱:[email protected]
目录
1.Vue Router的使用场景
2.选择什么样的模式的路由和底层原理
3.Nuxt 用来解决什么问题
4.Nuxt核心原理
5.UI组件库的对比
6.提升开发效率和体验的常用工具
7.单元测试的重要性和使用
传统的开发模式:
www.xxx.com——index.html;
www.xxx.com/about——about.html;
www.xxx.com/xxx——xxx.html.
单页面(SPA)开发模式:www.xxx.com——index.html;www.xxx.com/about——index.html;www.xxx.com/xxx——index.html
解决的问题:监听URL的变化,并在变化前后执行相应的逻辑;不同的URL对应不同的不同的组件;提供多种方式概念URL的API(URL的改变不能导致浏览器刷新)
使用方法:提供一个路由配置表,不同的URL对应不同组件的配置;初始化路由实例new VueRouter();挂载到Vue实例上面;提供一个路由占位,用来挂载URL匹配的组件
import Vue from 'vue'
import VueRouter from 'vue-router"
import App from './App.vue'
import routes from './routes'
Vue.config.productionTip = false
vue.use(VueRouter)
const router =new VueRouter(
{
//mode: 'history',
routes,
})
new Vue({
router,
render: h > h(App),
}).$mount('#app')
router demo
router.js
import RouterDemo from './components/RouterDemo'
import RouterChildrenDemo from './components/RouterChildrenDemo'
const routes =[
{ path: '/foo' , component: RouterDemo,name: '1'},
{ path: '/bar' , component: RouterDemo,name: '2'},
//当/user/:id匹配成功,
// RouterDemO会被渲染在App的 中
{ path: '/user/:id',
component: RouterDemo,
name: '3',
props: true,
children: [
{
//当/user/:id/profile匹配成功,
// RouterchildrenDemo会被渲染在 RouterDemo的 中
path: 'profile',
component: RouterchildrenDemo,
name: '3-1'
},
{
//当/user/: id/posts 匹配成功
// RouterChildrenDemo 会被瀘染在RouterDemo 的 中
path:'posts',
component: RouterChildrenDemo
}
]
}
,
{ path: '/a', redirect:'/bar' },
{ path: '*', component: RouterDemo, name: '404' }
]
export default routes
路由类型:
Hash模式:丑,没办法使用锚点定位;
History模式:需要后端配合,IE9不兼容(可以使用强制刷新处理)
import Vue from 'vue '
import VueRouter from 'vue- router'
import App from ' ./App. vue '
import routes from ' ./ routes'
Vue.config. productionTip = false
Vue.use (VueRouter)
const router = new
VueRouter({
node: 'history',
routes,
})
new Vue({
router,
render: h => h(App),
}). $mount( '#app' )
其实路由是通过蓝色那边的 API 把 router 的信息变成一个响应式的,触发 router-view 的更新
SPA 缺点:不利于SEO;服务端渲染SSR;首次屏渲染时间长;预渲染Prerenderirng
Nuxt的核心原理是什么,或者是SSR的核心原理/流程是什么?
打包业务代码的时候,提供两个入口文件,一个给服务端使用(返回新创建的 Vue 实例)一个给客户端/浏览器使用(将 Vue 实例挂载到指定的 DOM 上)。 经过 webpack 打包后会生成两个 bundle 文件,服务器的bundle 渲染了 html 什么的到我们页面上,但是具体的点击什么的还要靠客户端的 bundle 混合将 html 完全由 Vue 管理托管为 DOM,响应后续的变化。(所以不管服务端搞什么,客户端都是要渲染的)。
上面是不用 SSR 只返回一个空壳的 html,下面是使用 SSR,根据 url 返回对应字符串什么的给客户端。
Element UI、Ant Design Vue、View组件库的对比;
建议是使用单测比较高覆盖率的,这些都是组件库,里面包含一个个组件,然后合起来做一个模板的就是 admin 了。
一般有:ESLint、Prettier、Veter、vue-devtools;
Vuter:
- 语法高亮;
- 标签补全、模版生成;
- Lint检查;
- 格式化
这个其实是 vscode 的插件。
ESLint:
- 代码规范;
- 错误检查
Prettier:
- 格式化
可以看到我们配置 eslint 的时候也顺便配了个 prettier 就是防止两者冲突。直接按下保存即可更改。
module.export = {
singleQuote:ture,
//trailingComma:'all'
};
Vue DevTools:
- 集成Vuex
- 可远程调试
- 性能分析
重要性:
- 保证研发质量
- 提高项目的稳定性
- 提高开发速度
使用方法:
- jest或mocha
- @vue/test-utils
- sinon