Vue相关
基础
vue
vue-router
<div id="app">
<router-view></router-view>
</div>
const User = {
template: '<div>User {{ $route.params.id }}</div>'
}
const router = new VueRouter({
routes: [
{ path: '/user/:id', component: User }
]
})
vuex
const store = new Vuex.Store({
state: {
count: 1
},
mutations: {
increment (state) {
// 变更状态
state.count++
}
}
})
typescript集成
vuex-router-sync
同步vue-router的当前$route作为vuex存储状态的一部分。
import Vue from 'vue'
import App from './App.vue'
import { createRouter } from './router'
import { sync } from 'vuex-router-sync'
export function createApp (ssrContext) {
const router = createRouter()
const app = new Vue({
router,
ssrContext,
render: h => h(App)
})
return { app, router }
}
vue-loader
基于webpack的vue组件加载器
vue-template-compiler
此包可用于将Vue 2.0模板预编译为呈现函数,以避免运行时编译开销和CSP限制。只有在编写具有特定需求的构建工具时才需要它。在大多数情况下,您应该使用vue-loader或vueify,两者都在内部使用这个包。
const compiler = require('vue-template-compiler');
compiler.compile('<div v-test></div>', {
directives: {
test (node, directiveMeta) {
// transform node based on directiveMeta
}
}
})
vuedraggable
基于vue的可拖拽组件
服务端渲染
nuxt.js
vue服务端渲染框架
nuxt创建-部署
创建
- npx方式
$ npx create-nuxt-app <项目名>
- yarn方式
$ yarn create nuxt-app <项目名>
创建时一步一步按提示走就行了
运行
$ npm run dev
浏览器访问:http://127.0.0.1:3000/
打包
$ npm run build
部署
- 新建目录 test 然后把 .nuxt、static、nuxt.config.js和package.json复制进来
├── test
│ ├── .nuxt
│ ├── static
│ ├── nuxt.config.js
└── └── package.json
- 安装依赖
$ npm install
- 修改package.json的启动脚本
"scripts": {
"dev": "cross-env NODE_ENV=development nodemon server/index.js --watch server",
"build": "nuxt build",
"start": "nuxt start",
"generate": "nuxt generate",
"lint": "eslint --ext .js,.vue --ignore-path .gitignore .",
"precommit": "npm run lint"
}
- 启动访问
$ npm start
浏览器访问:http://localhost:3000
静态部署
$ npm run generate
此命令会生成dist目录,所有静态化后的资源文件均在其中。
generate配置:https://zh.nuxtjs.org/api/configuration-generate/
nuxt.config.js
module.exports = {
generate: {
routes: [
'/users/1',
'/users/2',
'/users/3'
]
}
}
vue-server-renderer
vue-server-renderer就是vue中处理服务端加载的模块
// 第 1 步:创建一个 Vue 实例
const Vue = require('vue')
const app = new Vue({
template: `<div>Hello World</div>`
})
// 第 2 步:创建一个 renderer
const renderer = require('vue-server-renderer').createRenderer()
// 第 3 步:将 Vue 实例渲染为 HTML
renderer.renderToString(app, (err, html) => {
if (err) throw err
console.log(html)
// => <div data-server-rendered="true">Hello World</div>
})
// 在 2.5.0+,如果没有传入回调函数,则会返回 Promise:
renderer.renderToString(app).then(html => {
console.log(html)
}).catch(err => {
console.error(err)
})
vue-meta
用于管理HMTL头部标签
<template>
...
</template>
<script>
export default {
metaInfo: {
title: 'My Example App', // set a title
titleTemplate: '%s - Yay!', // title is now "My Example App - Yay!"
htmlAttrs: {
lang: 'en',
amp: undefined // "amp" has no value
}
}
}
</script>
native开发
vue native
native开发框架
vue-native
weex