到目前,vue 3 gayhub 官選 除了服務端渲染外,大部分工做已經完成了,vue-loader也有了第一版,意味着能夠去嚐鮮了。css
基本功能作個todoMVC vue3.0html
安裝 webpack vue-loader alpha 安裝新版 vuenode
mkdir todolist-vue3 && cd todolist-vue3 && npm init -y
yarn add webpack webpack-cli webpack-dev-server vue-loader@16.0.0-alpha.1 @vue/compiler-sfc@3.0.0-alpha.1 --dev
yarn add todomvc-app-css todomvc-common vue@3.0.0-alpha.1
mkdir src && touch src/index.js
複製代碼
配置下入口 source map 方便調試 vue loader 主要解析 SFC 組件webpack
const path = require('path')
const {
VueLoaderPlugin
} = require('vue-loader')
module.exports = {
entry: './src/index.js',
module: {
rules: [{
test: /\.vue$/,
use: 'vue-loader'
}]
},
devtool: 'source-map',
resolve: {
extensions: ['.vue', '.js'],
alias: {
'vue': '@vue/runtime-dom'
}
},
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'build'),
},
devServer: {
inline: true,
hot: true,
stats: 'minimal',
contentBase: __dirname,
overlay: true
},
plugins: [
new VueLoaderPlugin()
],
}
複製代碼
引入 todomvc的樣式包 及打包好的bundle.jsgit
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<link rel="stylesheet" href="node_modules/todomvc-common/base.css">
<link rel="stylesheet" href="node_modules/todomvc-app-css/index.css">
</head>
<body>
<div id="app"></div>
<script src="bundle.js"></script>
</body>
</html>
複製代碼
<template>
<div>hello world</div>
</template>
<script>
export default {
}
</script>
複製代碼
import { createApp } from 'vue'
import App from './App.vue'
createApp().mount(App, '#app')
複製代碼
定義對外暴漏的state和函數github
interface Todo{ //todo 項
id:number
title:string
compeleted:boolean
}
const noop=()=>{}
interface TodosProvider{
state={
todos:Todo[]
visibility:string
newTodo:Todo,
editTodo:Todo,
}
addTodo:noop
removeTodo:noop
cancelEdit:noop
doneEdit:noop
handleEditTodo:noop
switchVisiBility:noop
}
複製代碼
看 gayhub 吧, 表述不如本身理解web
整體感受比2.0香~~shell
拆分業務和組件交互邏輯。這樣的好處: 關注點分離,業務邏輯也能夠複用。npm
目前工程化還在完善中。
目前這版本尚未導出vue.d.ts ,因此木辦法使用 TS,若是能使用ts,可能更香。
目前對2.0的兼容還有些問題,不建議業務開發使用。