天气与日历 切换到窄版

 找回密码
 立即注册

QQ登录

只需一步,快速开始

【好消息,好消息,好消息】VIP会员可以发表文章赚积分啦 !
查看: 647|回复: 0

[Electron+VUE教程] [vue]基于vue-cli、elementUI的Vue超简单入门小例子

[复制链接]

3188

主题

4

回帖

3290

积分

管理员

积分
3290
发表于 2024-2-27 10:45:40 | 显示全部楼层 |阅读模式
基于vue-cli、elementUI的Vue超简单入门小例子



  • 这个例子还是比较简单的,独立完成后,能大概知道vue是干嘛的,可以写个todoList的小例子。
  • 开始写例子之前,先对环境的部署做点简单的介绍,其实和Vue官方的差不多。
    1. #如若没有安装过vue-cli,先全局安装一下vue-cli
    2. $ cnpm i -g vue-cli
    3. #到自己喜欢的目录下创建一个基于 webpack 模板的新项目
    4. $ vue init webpack my-project
    5. #
    6. #
    7. #之后会有如下询问
    8. ? Project name (my-project) #回车
    9. ? Project description  #回车,也可以写点项目描述
    10. ? Author #回车,或者输入作者
    11. ? Vue build standalone #回车
    12. ? Install vue-router? (Y/n) #这里是官方推荐的路由,果断yes
    13. ? Use ESLint to lint your code? #No
    14. ? Set up unit tests #No
    15. ? Setup e2e tests with Nightwatch? #No
    16. ? Should we run `npm install` for you after the project has been created? (recommended)
    17. > Yes, use NPM #可以按上下方向键选择,这里我选第一个NPM,按回车确认
    18.   Yes, use Yarn
    19.   No, I will handle that myself
    20. #等待完成
    复制代码
    完成后可能会有警告,没事,不是ERR就好
    1. $ cd my-project #进入刚新建的文件夹
    2. $ cnpm install  #这里用的是淘宝的NPM镜像,不懂可以自行搜索cnpm
    3. $ npm run dev
    4. ###I  Your application is running here: http://localhost:8080
    复制代码
    **确保端口没被占用,打开localhost:8080 see see **




    [td]
    名称说明
    build项目构建的一些代码
    config开发环境的配置
    node_modules一些依赖包
    src源码,我们就在这个文件夹内写代码
    static静态文件
    .babelrcES6编译的一些配置
    .editorconfig代码风格配置文件
    .gitignoregit上传时忽略的一些文件,比如node_modules这个文
    .postcssrc.js听说是转换CSS样式的
    index.html入口页面
    package-lock.json听说是更详细的package.json
    package.json项目信息,项目名称,开发的依赖的记录等,一个JSON文件


    现在打开src\\componnets\\HelloWorld.vue 把大部分代码删除,剩余如下:
    1. <template>
    2.     <h1>{{ msg }}</h1>
    3. </template>
    4. <script>
    5. export default { //ES6语法,用于输出到外部,这样就可以在其他文件内用import输入
    6.   name: \'HelloWorld\',
    7.   data () {    //由于是组件,data必须是个函数,这是ES6写法,data后面加括号相当于data: function () {}
    8.     return {   //记得return不然接收不到数据
    9.       msg: \'Welcome\' //上面的 msg 就是这里输出的
    10.     }
    11.   }
    12. }
    13. </script>
    14. <style>
    15. h1 {
    16.   font-weight: normal;
    17. }
    18. a {
    19.   color: #42b983;
    20. }
    21. </style>
    复制代码
    到这里用了点ES6语法,如果对export和import不了解的,建议看看相关的介绍,暂时不想看也可以照着敲代码。不过建议还是看看,只需10分钟了解下export和import就好—— 阮一峰ECMAScript 6 入门


    可以看到,之前打开的页面变了样:

    ####现在我们来安装一下element-ui(关于element-ui详细情况请自行搜索)


    可以按照官方方法使用npm i element-ui -S命令进行安装
    也可以在package.json中添加,后通过cnpm install进行安装


    这里我们选择2,打开package.json,找到devDependencies并在最后加上\"element-ui\": “^2.2.1”
    1. "devDependencies": {
    2. ...
    3. ...
    4. "element-ui": "^2.2.1"
    复制代码
    打开命令行停止服务,再通过cnpm install进行安装,安装完成后npm run dev启动
    打开main.js在里面添加三行内容
    1. import ElementUI from \'element-ui\' //新添加
    2. import \'element-ui/lib/theme-chalk/index.css\' //新添加,避免后期打包样式不同,要放在import App from \'./App\';之前
    3. import Vue from \'vue\'
    4. import App from \'./App\'
    5. import router from \'./router\'


    6. Vue.use(ElementUI)   //新添加
    7. Vue.config.productionTip = false

    8. /* eslint-disable no-new */
    9. new Vue({
    10.   el: \'#app\',
    11.   router,
    12.   components: { App },
    13.   template: \'<App/>\'
    14. })

    复制代码
    添加了这三行,我们就可以使用element-ui了
    接下来在components文件夹内新建一个NewContact.vue 文件,添加如下代码
    1. <template>
    2.   <el-row>
    3.     <el-button type="success">1</el-button>
    4.   </el-row>
    5. </template>
    6. <script>

    7. </script>
    8. <style>

    9. </style>

    复制代码
    打开之前的HelloWorld.vue对内容进行修改(router是官方路由插件,router-link to是router的语法):
    1. <template>
    2. <!-- 这里router-link to="newcontact"会把路由导航到http://localhost:8080/#/newcontact   -->
    3.     <router-link to="newcontact"><h1>{{ msg }}</h1></router-link>
    4. </template>
    复制代码
    打开router/index.js,添加新路由(router是官方路由插件,深入学习请查看文档
    1. import Vue from \'vue\'
    2. import Router from \'vue-router\'
    3. import HelloWorld from \'@/components/HelloWorld\'
    4. import NewContact from \'@/components/NewContact\'//新添加,之后在下方的component: NewContact才会生效
    5. Vue.use(Router)
    6. export default new Router({
    7.   routes: [
    8.     {
    9.       path: \'/\',
    10.       name: \'HelloWorld\',
    11.       component: HelloWorld
    12.     },
    13.     {
    14.       path: \'/newcontact\',//和router-link to相呼应,导航到/newcontact
    15.       name: \'NewContact\',
    16.       component: NewContact
    17.     }
    18.   ]
    19. })
    复制代码
    保存后打开页面可以看到如下:

    之前的welcome变成了可点击的链接,点击后跳转看到如下页面

    至此,已经我们已经把该引入的依赖,和路由的简单配置,简单组件的使用给完成了
    接下来我们把精力都放到NewContact.vue这个组件,后面的代码几乎都在这个组件


    打开NewContact.vue键入如下代码:

    1. <template>
    2.   <el-row>
    3.     姓名:{{info.name}}
    4.     <el-input v-model="info.name" placeholder="请输入姓名"></el-input>
    5.     年龄:{{info.age}}
    6.     <el-input v-model="info.age" placeholder="请输入年龄"></el-input>
    7.     性别:{{info.sex}}
    8.     <el-select v-model="info.sex" placeholder="请选择">
    9.       <el-option v-for="item in options" :key="item" :value="item"></el-option><!-- 这里的key官方推荐在v-for时使用,不然会警告,但不影响使用 -->
    10.     </el-select>
    11.   </el-row>
    12. </template>
    13. <script>
    14. export default {
    15.   name: "NewContact",
    16.   data(){
    17.     return {
    18.       info: {
    19.         name: \'\',
    20.         age: null,
    21.         sex: \'\'
    22.       },
    23.       options: [
    24.         \'女\',\'男\',\'保密\'
    25.       ]
    26.     }
    27.   }
    28. }
    29. </script>
    30. <style>

    31. </style>
    复制代码
    <el-input v-model=\"info.name\"></el-input>
    el-input是element-ui的组件,以el-开头的是element-ui的组件
    v-model这里的v-model是Vue的指令,官方说法是——在表单控件或者组件上创建双向绑定。
    =\"info.name\"就是v-model绑定的数据,在data中return的内容里看到info.name对应的是\'\';info.age对应的是null
    1. return {
    2.       info: {
    3.         name: \'\',
    4.         age: null,
    5.         sex: \'\'
    6.       }
    复制代码

    当我们打开http://localhost:8080/#/newcontact

    在输入框输入内容时可见,姓名:{{info.name}}双花括号里的内容也跟着改变,这就是双向绑定



    <el-option v-for=\"item in options\" :key=\"item\" :value=\"item\">
    v-for=\"item in options\"就是循环options这个数组的内容

    1. options: [
    2.         \'女\',\'男\',\'保密\'
    3.       ]
    复制代码
    基于vue-cli、elementUI的Vue超简单入门小例子


    • 这个例子还是比较简单的,独立完成后,能大概知道vue是干嘛的,可以写个todoList的小例子。
    • 开始写例子之前,先对环境的部署做点简单的介绍,其实和Vue官方的差不多。
    • #如若没有安装过vue-cli,先全局安装一下vue-cli
    • $ cnpm i -g vue-cli
    • #到自己喜欢的目录下创建一个基于 webpack 模板的新项目
    • $ vue init webpack my-project
    • #
    • #
    • #之后会有如下询问
    • ? Project name (my-project) #回车
    • ? Project description  #回车,也可以写点项目描述
    • ? Author #回车,或者输入作者
    • ? Vue build standalone #回车
    • ? Install vue-router? (Y/n) #这里是官方推荐的路由,果断yes
    • ? Use ESLint to lint your code? #No
    • ? Set up unit tests #No
    • ? Setup e2e tests with Nightwatch? #No
    • ? Should we run `npm install` for you after the project has been created? (recommended)
    • > Yes, use NPM #可以按上下方向键选择,这里我选第一个NPM,按回车确认
    •   Yes, use Yarn
    •   No, I will handle that myself
    • #等待完成


    [color=rgb(51, 102, 153) !important]复制代码

    完成后可能会有警告,没事,不是ERR就好


    • $ cd my-project #进入刚新建的文件夹
    • $ cnpm install  #这里用的是淘宝的NPM镜像,不懂可以自行搜索cnpm
    • $ npm run dev
    • ###I  Your application is running here: http://localhost:8080


    [color=rgb(51, 102, 153) !important]复制代码

    **确保端口没被占用,打开localhost:8080 see see **




    [td]
    名称说明
    build项目构建的一些代码
    config开发环境的配置
    node_modules一些依赖包
    src源码,我们就在这个文件夹内写代码
    static静态文件
    .babelrcES6编译的一些配置
    .editorconfig代码风格配置文件
    .gitignoregit上传时忽略的一些文件,比如node_modules这个文
    .postcssrc.js听说是转换CSS样式的
    index.html入口页面
    package-lock.json听说是更详细的package.json
    package.json项目信息,项目名称,开发的依赖的记录等,一个JSON文件


    现在打开src\\componnets\\HelloWorld.vue 把大部分代码删除,剩余如下:
    • <template>
    •     <h1>{{ msg }}</h1>
    • </template>
    • <script>
    • export default { //ES6语法,用于输出到外部,这样就可以在其他文件内用import输入
    •   name: \'HelloWorld\',
    •   data () {    //由于是组件,data必须是个函数,这是ES6写法,data后面加括号相当于data: function () {}
    •     return {   //记得return不然接收不到数据
    •       msg: \'Welcome\' //上面的 msg 就是这里输出的
    •     }
    •   }
    • }
    • </script>
    • <style>
    • h1 {
    •   font-weight: normal;
    • }
    • a {
    •   color: #42b983;
    • }
    • </style>


    [color=rgb(51, 102, 153) !important]复制代码


    到这里用了点ES6语法,如果对export和import不了解的,建议看看相关的介绍,暂时不想看也可以照着敲代码。不过建议还是看看,只需10分钟了解下export和import就好—— 阮一峰ECMAScript 6 入门


    可以看到,之前打开的页面变了样:

    ####现在我们来安装一下element-ui(关于element-ui详细情况请自行搜索)


    可以按照官方方法使用npm i element-ui -S命令进行安装
    也可以在package.json中添加,后通过cnpm install进行安装


    这里我们选择2,打开package.json,找到devDependencies并在最后加上\"element-ui\": “^2.2.1”
    • "devDependencies": {
    • ...
    • ...
    • "element-ui": "^2.2.1"


    [color=rgb(51, 102, 153) !important]复制代码

    打开命令行停止服务,再通过cnpm install进行安装,安装完成后npm run dev启动
    打开main.js在里面添加三行内容
    • import ElementUI from \'element-ui\' //新添加
    • import \'element-ui/lib/theme-chalk/index.css\' //新添加,避免后期打包样式不同,要放在import App from \'./App\';之前
    • import Vue from \'vue\'
    • import App from \'./App\'
    • import router from \'./router\'
    • Vue.use(ElementUI)   //新添加
    • Vue.config.productionTip = false
    • /* eslint-disable no-new */
    • new Vue({
    •   el: \'#app\',
    •   router,
    •   components: { App },
    •   template: \'<App/>\'
    • })


    [color=rgb(51, 102, 153) !important]复制代码

    添加了这三行,我们就可以使用element-ui了
    接下来在components文件夹内新建一个NewContact.vue 文件,添加如下代码
    • <template>
    •   <el-row>
    •     <el-button type="success">1</el-button>
    •   </el-row>
    • </template>
    • <script>
    • </script>
    • <style>
    • </style>


    [color=rgb(51, 102, 153) !important]复制代码

    打开之前的HelloWorld.vue对内容进行修改(router是官方路由插件,router-link to是router的语法):
    • <template>
    • <!-- 这里router-link to="newcontact"会把路由导航到http://localhost:8080/#/newcontact   -->
    •     <router-link to="newcontact"><h1>{{ msg }}</h1></router-link>
    • </template>


    [color=rgb(51, 102, 153) !important]复制代码

    打开router/index.js,添加新路由(router是官方路由插件,深入学习请查看文档
    • import Vue from \'vue\'
    • import Router from \'vue-router\'
    • import HelloWorld from \'@/components/HelloWorld\'
    • import NewContact from \'@/components/NewContact\'//新添加,之后在下方的component: NewContact才会生效
    • Vue.use(Router)
    • export default new Router({
    •   routes: [
    •     {
    •       path: \'/\',
    •       name: \'HelloWorld\',
    •       component: HelloWorld
    •     },
    •     {
    •       path: \'/newcontact\',//和router-link to相呼应,导航到/newcontact
    •       name: \'NewContact\',
    •       component: NewContact
    •     }
    •   ]
    • })


    [color=rgb(51, 102, 153) !important]复制代码

    保存后打开页面可以看到如下:

    之前的welcome变成了可点击的链接,点击后跳转看到如下页面

    至此,已经我们已经把该引入的依赖,和路由的简单配置,简单组件的使用给完成了
    接下来我们把精力都放到NewContact.vue这个组件,后面的代码几乎都在这个组件


    打开NewContact.vue键入如下代码:

    • <template>
    •   <el-row>
    •     姓名:{{info.name}}
    •     <el-input v-model="info.name" placeholder="请输入姓名"></el-input>
    •     年龄:{{info.age}}
    •     <el-input v-model="info.age" placeholder="请输入年龄"></el-input>
    •     性别:{{info.sex}}
    •     <el-select v-model="info.sex" placeholder="请选择">
    •       <el-option v-for="item in options" :key="item" :value="item"></el-option><!-- 这里的key官方推荐在v-for时使用,不然会警告,但不影响使用 -->
    •     </el-select>
    •   </el-row>
    • </template>
    • <script>
    • export default {
    •   name: "NewContact",
    •   data(){
    •     return {
    •       info: {
    •         name: \'\',
    •         age: null,
    •         sex: \'\'
    •       },
    •       options: [
    •         \'女\',\'男\',\'保密\'
    •       ]
    •     }
    •   }
    • }
    • </script>
    • <style>
    • </style>


    [color=rgb(51, 102, 153) !important]复制代码

    <el-input v-model=\"info.name\"></el-input>
    el-input是element-ui的组件,以el-开头的是element-ui的组件
    v-model这里的v-model是Vue的指令,官方说法是——在表单控件或者组件上创建双向绑定。
    =\"info.name\"就是v-model绑定的数据,在data中return的内容里看到info.name对应的是\'\';info.age对应的是null

    • return {
    •       info: {
    •         name: \'\',
    •         age: null,
    •         sex: \'\'
    •       }


    [color=rgb(51, 102, 153) !important]复制代码

    当我们打开http://localhost:8080/#/newcontact

    在输入框输入内容时可见,姓名:{{info.name}}双花括号里的内容也跟着改变,这就是双向绑定



    <el-option v-for=\"item in options\" :key=\"item\" :value=\"item\">
    v-for=\"item in options\"就是循环options这个数组的内容

    • options: [
    •         \'女\',\'男\',\'保密\'
    •       ]


    [color=rgb(51, 102, 153) !important]复制代码

    如果在里面添加内容,那么下拉菜单的内容会一起变化,一 一对应
    :value=\"item\"会把你选的(‘女’,‘男’,‘保密’)传给<el-select v-model=\"info.sex\">
    v-model=\"info.sex\"会传给data中的info.sex

    1. return {
    2.       info: {
    3.         name: \'\',
    4.         age: null,
    5.         sex: \'\'
    6.       }
    复制代码

    接下来在加入新代码,NewContact.vue目前的代码如下:

    1. .....
    2.     </el-select>
    3.     <el-button @click="create">创建</el-button>
    4.     <template>
    5.       <el-table :data="tabledata" align="left">
    6.         <el-table-column prop="name" label="姓名"></el-table-column>
    7.         <el-table-column prop="age" label="年龄"></el-table-column>
    8.         <el-table-column prop="sex" label="性别"></el-table-column>
    9.         <el-table-column label="操作">
    10.           <template slot-scope="a">
    11.             <el-button size="mini" type="danger" @click="del(a.$index)">删除</el-button>
    12.           </template>
    13.         </el-table-column>
    14.       </el-table>
    15.     </template>
    16.   </el-row>
    17. </template>
    18. <script>
    19. export default {
    20.   name: "NewContact",
    21.   data(){
    22.     return {
    23.       info: {
    24.         name: \'\',
    25.         age: null,
    26.         sex: \'\'
    27.       },
    28.       options: [
    29.         \'女\',\'男\',\'保密\'
    30.       ],
    31.       tabledata:[
    32.         {name: \'Leo\', age: 12, sex: \'man\'},
    33.         {name: \'Lei\', age: 22, sex: \'women\'},
    34.         {name: \'Lii\', age: 65, sex: \'men\'}
    35.       ]
    36.     }
    37.   }
    38. }
    39. </script>
    40. <style>

    41. </style>

    复制代码

    <el-button @click=\"create\" type=\"success\">创建</el-button>
    这里就是创建了一个按钮,@是v-on的缩写,点击后会出发create这个函数

    <el-table :data=\"tabledata\">
    就是表格要绑定的数据

    <el-table-column prop=\"name\">
    在表格绑定数据情况下prop用于数据传递,tabeldata里的name

    <template slot-scope=\"a\">
    是Vue2.5.0后替代之前scope的作用域插槽,\"a\"是随便的名字,就用用来后去table的状态,可以获取的row, column, $index和store,这里我们只需要获取index就行了,相关具体内容点这里


    @click=\"del(a.$index)
    @是v-on的缩写,表示点击后调用del函数,a.$index表示slot-scope获取到的index值

    1. tabledata:[//这里的内容是方便我们看到table的变化,可见页面上的table有了如下的内容
    2.         {name: \'Leo\', age: 12, sex: \'man\'},
    3.         {name: \'Lei\', age: 22, sex: \'women\'},
    4.         {name: \'Lii\', age: 65, sex: \'men\'}
    5.       ]
    复制代码

    打开页面可以看到


    我们点击创建和删除按钮并没有反应,所以我们要添加methods,在它内部添加两个方法,一个是创建,一个是删除

    1. data(){
    2. ...
    3. },
    4.   methods: {//添加在data(){...},的后面
    5.     create(){
    6.       this.tabledata.push(this.info)//给tabledata添加一个对象(之前我们创建的info)
    7.       this.info =  {name: \'\', age: null, sex: \'\'}//点击创建后,让option还原,而不是停留在所选的项
    8.     },
    9.     del(index){
    10.       this.tabledata.splice(index,1)//删除点击的对象,index是lot-scope="a" a.$index传过来的
    11.     }
    12.   }
    复制代码

    到这里已经完成了添加和删除,为了在我们刷新页面后,数据依然保存着,我们可以用localStorage本地存储数据
    关于localStorage可以点击这里了解

    接下来我们在src内新建一个store文件夹,和App.vue、components同一个层级,在里面新建一个store.js,内容如下

    1. const STORAGE_KEY = \'tabale-vuejs\'//名字随便起
    2. export default {//向往输出,以便组件接收
    3.         fetch() {//我们定义的获取数据的方法
    4.                 return JSON.parse(window.localStorage.getItem(STORAGE_KEY)
    5.                  || \'[]\')
    6.         },
    7.         save(items) {//我们定义的保存数据的方法
    8.                 window.localStorage.setItem(STORAGE_KEY, JSON.stringify(items))
    9.         }
    10. }
    复制代码

    getItem和setItem是window.localStorage的获取和保存数据的方法
    我们用JSON.stringify和JSON.parse把数据转成字符串和解析,这样就方便我们写入tabledata
    接下来我们添加新代码

    1. <script>
    2. import Storage from \'../store/store\'//新添加,把刚写的localStorage导入
    3. export default {
    4. name: "NewContact",
    5.   data(){
    6.     return {
    7.       info: {
    8.         name: \'\',
    9.         age: null,
    10.         sex: \'\'
    11.       },
    12.       options: [
    13.         \'女\',\'男\',\'保密\'
    14.       ],
    15.       tabledata: Storage.fetch()//把之前的删除,写入这个获取数据的方法
    16.     }
    17.   },
    18.   methods: {
    19.     create(){
    20.       this.tabledata.push(this.info)
    21.       this.info =  {name: \'\', age: null, sex: \'\'}
    22.     },
    23.     del(index){
    24.       this.tabledata.splice(index,1)
    25.     }
    26.   },
    27.   watch:{//新添加,watch是vue的监听,一旦监听对象有变化就会执行相应操作
    28.     tabledata{//新添加,被监听的对象
    29.       handler(items){Storage.save(items)},//新添加,监听对象变化后所做的操作,一个函数,保存数据
    30.       deep: true//深度监听,避免数据的嵌套层数太多,要使用深度监听,防止数据层级过多监听不到  
    31.   }
    复制代码

    tabledata:由于fetch()得到的是数组,所以直接tabledata: 后写入就行类似于

    1. tabledata:[{...},{...}]
    复制代码

    当我们添加删除数据时,可以打开chrmoe浏览器的F12>Application>Local Storage进行查看


    总的来说就是我们点击页面上的创建按钮,watch监听到tabledata有变化,就执行savedata(items){Storage.save(items)}进行数据保存,点击删除时,tabledata也有变化,同样会执行保存
    可能之前写的内容会有不小心写错字母的情况,最后把NewContact.vue稍稍修改样式后,把完整的内容拷贝到下方:
    NewContact.vue

    1. <template>
    2.   <el-row>
    3.     <el-col :xs="24" :sm="18" :md="14" :lg="10" id="main">
    4.     <label>姓名:</label>  
    5.     <el-input v-model="info.name" placeholder="请输入姓名"></el-input>
    6.     <label>年龄:</label>
    7.     <el-input v-model="info.age" placeholder="请输入年龄"></el-input>
    8.     <label>性别:</label>
    9.     <el-select v-model="info.sex" placeholder="请选择">
    10.       <el-option v-for="item in options" :key="item" :value="item"></el-option><!-- 这里的key官方推荐在v-for时使用,不然会警告,但不影响使用 -->
    11.     </el-select>
    12.     <el-button  class="btn-auto" @click="create" type="success">创建</el-button>
    13.     <template>
    14.       <el-table :data="tabledata" align="left">
    15.         <el-table-column prop="name" label="姓名"></el-table-column>
    16.         <el-table-column prop="age" label="年龄"></el-table-column>
    17.         <el-table-column prop="sex" label="性别"></el-table-column>
    18.         <el-table-column label="操作">
    19.           <template slot-scope="a">
    20.             <el-button size="mini" type="danger" @click="del(a.$index)">删除</el-button>
    21.           </template>
    22.         </el-table-column>
    23.       </el-table>
    24.     </template>
    25.     </el-col>
    26.   </el-row>
    27. </template>
    28. <script>
    29. import Storage from \'../store/store\'
    30. export default {
    31.   name: "NewContact",
    32.   data(){
    33.     return {
    34.       info: {
    35.         name: \'\',
    36.         age: null,
    37.         sex: \'\'
    38.       },
    39.       options: [
    40.         \'女\',\'男\',\'保密\'
    41.       ],
    42.       tabledata: Storage.fetch()
    43.     }
    44.   },
    45.   methods: {
    46.     create(){
    47.       this.tabledata.push(this.info)
    48.       this.info =  {name: \'\', age: null, sex: \'\'}
    49.     },
    50.     del(index){
    51.       this.tabledata.splice(index,1)
    52.     }
    53.   },
    54.   watch:{
    55.     tabledata:{
    56.       handler(items){Storage.save(items)},
    57.       deep: true
    58.     }
    59.   }
    60. }
    61. </script>
    62. <style>
    63.     #main{
    64.       float: none;
    65.       margin: 0 auto;
    66.   }
    67.   .el-input{
    68.     padding-bottom: 5px;
    69.   }
    70.   .el-select {
    71.       display: block;
    72.   }
    73.   .btn-auto{
    74.       width: 100%;
    75.       margin-top: 12px;
    76.   }
    77. </style>

    复制代码

    这里是localStorage:

    1. const STORAGE_KEY = \'tabale-vuejs\'
    2. export default {
    3.         fetch() {
    4.                 return JSON.parse(window.localStorage.getItem(STORAGE_KEY)
    5.                  || \'[]\')
    6.         },
    7.         save(items) {
    8.                 window.localStorage.setItem(STORAGE_KEY, JSON.stringify(items))
    9.         }
    10. }
    复制代码

    完成后我们要进行打包,方便直接在浏览器中运行
    打开/config/index.js

    1.   build: {
    2.     // Template for index.html
    3.     index: path.resolve(__dirname, \'../dist/index.html\'),

    4.     // Paths
    5.     assetsRoot: path.resolve(__dirname, \'../dist\'),
    6.     assetsSubDirectory: \'static\',
    7.     assetsPublicPath: \'./\',//加了个. 避免生产路径的错误

    8.     /**
    9.      * Source Maps
    10.      */

    11.     productionSourceMap: false, //改为false
    复制代码

    然后运行$ npm run build
    等待完成,会生成dist文件夹,直接打开里面的index.html就可以在浏览器运行了

  • [vue]基于vue-cli、elementUI的Vue超简单入门小例子



相关帖子

扫码关注微信公众号,及时获取最新资源信息!下载附件优惠VIP会员5折;永久VIP免费
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明:
1、本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
2、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,请勿任何商业目的与商业用途。
3、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
4、论坛的所有内容都不保证其准确性,完整性,有效性,由于源码具有复制性,一经售出,概不退换。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
5、用户使用本网站必须遵守适用的法律法规,对于用户违法使用本站非法运营而引起的一切责任,由用户自行承担
6、本站所有资源来自互联网转载,版权归原著所有,用户访问和使用本站的条件是必须接受本站“免责声明”,如果不遵守,请勿访问或使用本网站
7、本站使用者因为违反本声明的规定而触犯中华人民共和国法律的,一切后果自己负责,本站不承担任何责任。
8、凡以任何方式登陆本网站或直接、间接使用本网站资料者,视为自愿接受本网站声明的约束。
9、本站以《2013 中华人民共和国计算机软件保护条例》第二章 “软件著作权” 第十七条为原则:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。若有学员需要商用本站资源,请务必联系版权方购买正版授权!
10、本网站如无意中侵犯了某个企业或个人的知识产权,请来信【站长信箱312337667@qq.com】告之,本站将立即删除。
郑重声明:
本站所有资源仅供用户本地电脑学习源代码的内含设计思想和原理,禁止任何其他用途!
本站所有资源、教程来自互联网转载,仅供学习交流,不得商业运营资源,不确保资源完整性,图片和资源仅供参考,不提供任何技术服务。
本站资源仅供本地编辑研究学习参考,禁止未经资源商正版授权参与任何商业行为,违法行为!如需商业请购买各资源商正版授权
本站仅收集资源,提供用户自学研究使用,本站不存在私自接受协助用户架设游戏或资源,非法运营资源行为。
快速回复 返回顶部 返回列表