惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Microsoft Azure Blog
Microsoft Azure Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Webroot Blog
Webroot Blog
腾讯CDC
The Last Watchdog
The Last Watchdog
博客园 - 司徒正美
H
Hacker News: Front Page
I
InfoQ
A
Arctic Wolf
H
Hackread – Cybersecurity News, Data Breaches, AI and More
H
Heimdal Security Blog
L
LINUX DO - 最新话题
T
Threat Research - Cisco Blogs
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI
Security Latest
Security Latest
D
DataBreaches.Net
C
Check Point Blog
J
Java Code Geeks
www.infosecurity-magazine.com
www.infosecurity-magazine.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Attack and Defense Labs
Attack and Defense Labs
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
L
Lohrmann on Cybersecurity
雷峰网
雷峰网
Vercel News
Vercel News
WordPress大学
WordPress大学
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Spread Privacy
Spread Privacy
Forbes - Security
Forbes - Security
阮一峰的网络日志
阮一峰的网络日志
Hacker News: Ask HN
Hacker News: Ask HN
大猫的无限游戏
大猫的无限游戏
I
Intezer
N
News and Events Feed by Topic
小众软件
小众软件
B
Blog RSS Feed
Help Net Security
Help Net Security
Google DeepMind News
Google DeepMind News
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 三生石上(FineUI控件)
S
Security @ Cisco Blogs
美团技术团队
Recent Announcements
Recent Announcements
Martin Fowler
Martin Fowler
Engineering at Meta
Engineering at Meta
The GitHub Blog
The GitHub Blog
MyScale Blog
MyScale Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main

小蘿蔔丁

About 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。 小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。
小蘿蔔丁的自留地: 喜欢码字,数码控,美剧迷,热爱开源技术,前端搬砖,专注科技互联网。
2016-06-05 · via 小蘿蔔丁

最近几个月在学习Vue.js并把它应用到实际项目中,在通读官方中文教程之后,前期学习期间Create a GitHub File Explorer Using Vue.js这篇文章给我了较好的启发。于是结合自己最新的学习成果写下这篇总结。

源码地址:github-file-explorer

See DEMO

开发环境搭建

参考官方教程构建大型应用中提到的脚手架工具vue-cli,我初次了解到了webpackvue-cli是一个简单的脚手架,可以帮助你快速地构建 Vue 项目:单文件 Vue 组件,热加载,保存时检查代码,单元测试等功能。vue-li中有五个模板,我想用webpack-simple模板作为demo的开发环境再好不过了。

$> npm install vue-cli -g

)

创建第一个Vue应用

$> vue init webpack-simple github-file-explorer$> cd github-file-explorer$> npm install$> npm run dev

打开浏览器,输入http://localhost:8080

Boom,你会发现我们创建的第一个Vue应用启动了。

更改默认端口

webpack-simple集成了webpack-dev-server,默认启动的端口为8080,端口容易冲突。

翻阅文档,修改配置文件package.json,更换端口为8090

"scripts": {  "dev": "webpack-dev-server --inline --hot --port 8090",  "build": "cross-env NODE_ENV=production webpack --progress --hide-modules"},

热重载

webpack结合vue-loader以及vue-hot-reload-api实现了热重载,让开发体验极速提升。保存秒级更新,再也不用reload浏览器了。那些年我们都习惯了F5。

组件化开发体验

  • 项目结构
  • 引入资源
  • 简单vue指令的使用
  • 计算属性
  • 数据观察
  • 组件间数据传递
项目结构

引入资源

在index.html中引入资源,采用jsdelivrCDN加速。

<!-- Bootstrap --><link rel="stylesheet" href="https://cdn.jsdelivr.net/bootstrap/3.3.6/css/bootstrap.min.css"><!-- Octicons --><link rel="stylesheet" href="https://cdn.jsdelivr.net/octicons/3.5.0/octicons.css">
简单vue指令的使用
  • v-model 表单控件绑定
  • v-if 根据表达式的值的真假条件渲染元素
  • v-for 列表渲染
  • @clickv-on:click的简写,绑定事件监听
计算属性

computed可以对Vue实例上的数据进行再计算,根据需求,再次拼接fullRepoUrl。

fullRepoUrl: function() {  return this.username + '/' + this.repo;}
数据观察

watch可以观察每一个Vue实例上的数据变动。当数据发生变化的时候会触发方法。通过这个机制我们可以实现更换repo来触发列表更新。

watch: {  repo: function(newVal, oldVal) {    this.path = '/';    this.getFiles();  }}
组件间数据传递

组件(Component)是Vue.js最强大的功能之一。

在官方教程中组件占了绝大部分内容,说明组件在Vue中占有很重要的地位。

下图是我对github-file-explorer构建的简单组件链

main.js,是Vue的根实例,它扩展了App.vue作为父组件。

import Vue from 'vue'import VueResource from 'vue-resource'import App from './App.vue'Vue.use(VueResource)new Vue({  el: 'body',  components: { App }})
  • A,App作为父组件,建议App中不写业务逻辑,作为应用的layout,根据需求,做一个布局。比如:Header/Container/Sidebar
  • B,Github是App组件的子组件,同时也是FileExplorer组件的父组件,实现form表单获取github文件API列表。
  • C,FileExplorer组件为Github组件的子组件,实现列表清单。

组件关系:App > Github > FileExplorer

父组件与子组件间通讯(使用Props传递数据):

组件实例的作用域是孤立的。这意味着不能并且不应该在子组件的模板内直接引用父组件的数据。可以使用 props 把数据传给子组件。

父组件Github通过动态绑定Props向子组件传递数据

<file-explorer :username="username" :repo="repo"></file-explorer>

子组件FileExplorer通过Props接收父组件传递的数据

props: {  username: {    type: String,    required: true  },  repo: {    type: String,    required: true  }},

使用Vue插件

vue-resource,通过 XMLHttpRequest 或 JSONP 发起请求并处理响应

通过vue-resource请求github的API

getFiles: function() {  this.$http.get('https://api.github.com/repos/' + this.fullRepoUrl + '/contents' + this.path,    function(data) {      this.files = data;    }  );}

使用Vue Devtools提升开发效率

下图是对github-file-explorer组件链作用域的简单演示

Vue Devtools可以大大提升Vue应用的调试效率,再也不用 ::: v-pre {{ $data | json }} :::

打印调试数据了,并且它还可以调试Vuex,当你在使用Vuex时候可能对数据流转很困惑。那么使用Vue DevTools中的Vuex调试工具可以解决你的烦恼。关于Vuex的使用后续我会再写篇文章总结下,很好用的状态管理插件。不过Vue Devtools目前只有Chrome。意味着你只能在Chrome浏览器中才能使用Vue Devtools。

最终效果图