极乐门资源网 Design By www.ioogu.com
看完vue2的官方文档后,找个入门项目巩固下知识点,简单的todolsit是个不错的选择。
项目用到了vue.js
vue.cli
webpack
ES6
node
环境,完成项目后会对这些技术栈有了些了解。
准备开发环境
$ npm install -g vue-cli $ vue init ,比如 vue init webpack todolist $ cd todolist $ npm install $ npm run dev
- 安装谷歌插件vue.js devtools
- 下载vue.js的webpack模板
- 下载todomvc的模板 (提供html和css)(也可以直接$ git clone https://github.com/tastejs/todomvc-app-template.git 来下载)
- 把todomvc的index.html拖到todolist文件夹去覆盖里面的index.html
- 打开todomvc的json文件,会看到 “todomvc-app-css”: “^2.0.0”,就是要你 npm install todomvc-app-css -S 从而下载该css
- 删点todolsit index.html的默认css,js引用,src文件夹下的main.js引入模板css(import‘todomvc-app-css/index.css')
- 引入vue(import Vue form ‘vue')
- 等写完代码后 $npm run build 一键打包构建,会看到dist文件夹
main.js的代码
//后面的为注释讲解, ~表示串联index.html的对应内容 import 'todomvc-app-css/index.css' import Vue from 'vue' //添加localStorage var STORAGE_KEY = 'todos-vuejs-2.0' var todoStorage = { fetch: function () { var todos = JSON.parse(localStorage.getItem(STORAGE_KEY) || '[]') todos.forEach(function (todo, index) { todo.id = index }) todoStorage.uid = todos.length return todos }, save: function (todos) { localStorage.setItem(STORAGE_KEY, JSON.stringify(todos)) } } //用过滤器筛选出三种状态 var filters = { all(todos) { return todos }, active(todos) { return todos.filter((todo) => { return !todo.completed }) }, completed(todos) { return todos.filter((todo) => { return todo.completed }) }, } let app = new Vue({ el: '.todoapp', // ~ <section class="todoapp"> data: { msg: 'hello world', title: '待做清单', // 渲染标题 ~ {{title}} newTodo: '', todos: todoStorage.fetch(), // ~ v-show="todos.length" ; ~ {{todos.length>1"(todo,index) in filteredTodos" editedTodo: '', // 空的编辑对象 hashName: 'all' }, watch: { todos: { handler: function (todos) { todoStorage.save(todos) }, deep: true } }, computed: { remain() { return filters.active(this.todos).length //未完成事项的数量 ~ {{remain}} }, isAll: { // ~ v-model="isAll" get() { return this.remain === 0 }, set(value) { this.todos.forEach((todo) => { todo.completed = value }) } }, filteredTodos() { //用hashName过滤出当前页面的todos ~ v-for="(todo,index) in filteredTodos" return filters[this.hashName](this.todos) } }, methods: { addTodo(e) { //输入值为空时,不添加(trim去除前后空格) ~ v-model.trim="newTodo" if (!this.newTodo) { return } this.todos.push({ id: todoStorage.uid++, content: this.newTodo, completed: false //结合v-model 根据completed状态绑定样式 ~:class="{completed:todo.completed; ~ v-model="todo.completed" }) this.newTodo = '' }, removeTodo(index) { //绑定x样式,点击删除该todo ~ @click="removeTodo(index)" this.todos.splice(index, 1) }, editTodo(todo) { //编辑 ~ @dblclick="editTodo(todo)" this.editCache = todo.content //储存编辑前的内容 this.editedTodo = todo // 点击编辑里面的内容而不是只是空文本框~ editing:todo==editedTodo}" }, doneEdit(todo, index) { //失去焦点后 ~ @blur="doneEdit(todo)";@keyup.enter="doneEdit(todo)" this.editedTodo = null //不存在编辑了或者说编辑已完成 if (!todo.content) { //如果编辑后没有内容了,删除该todo this.removeTodo(index) } }, cancelEdit(todo) { //按esc键取消此次编辑操作 ~ @keyup.esc="cancelEdit(todo)"> this.editedTodo = null todo.content = this.editCache //当esc取消编辑时,还原编辑前的内容 }, clear() { //点击清除已完成的功能 ~ @click="clear" this.todos = filters.active(this.todos) //获取并渲染未完成的事项 ~ } }, directives: { //自定义属性 ~ v-focus="todo == editedTodo" focus(el, value) { //文本框双击获取焦点 if (value) { el.focus() } } } }) //hash(url地址中#以及之后的字符) function hashChange() { // ~ :class="{selected:hashName=='all'}";:class="{selected:hashName=='active'}";:class="{selected:hashName=='completed'}" let hashName = location.hash.replace(/#\/?/, '') //正则表达式去除#/?,获取如all,active,completed if (filters[hashName]) { //如果过滤状态的hashName存在 app.hashName = hashName //给整个app变量里的hashName赋上那个值 } else { location.hash = '' //取消 app.hashName = 'all' //否则就赋值‘all',回到全部事项的页面 } } window.addEventListener('hashchange', hashChange) //全局监听hash
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
极乐门资源网 Design By www.ioogu.com
极乐门资源网
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
极乐门资源网 Design By www.ioogu.com
暂无vue2的todolist入门小项目的详细解析的评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
2025年01月12日
2025年01月12日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]