稍作折腾,从零开始用 Vue.js
做了个小项目,算是方便了一点自己的生活吧2333
Vue Router 路由管理器
一个示例:
1 | { |
Vuex 中央数据管理
有一些要在多个视图(Views)里面用到并都能做出修改的数据就丢到 Vuex 里面吧,不然会遇到一堆父传子子传父的「伪双向绑定」问题。
在 src/store/index.js
里面作出如下头部配置:
1 | import Vue from 'vue' |
主配置项:
1 | export default new Vuex.Store({ |
在 .vue
中使用共享的数据:
1 | import { mapState } from 'vuex' |
数据永久性存储
借助 vuex-persistedstate 插件实现。
1 | npm install -S vuex-persistedstate |
在 store/index.js
中:
1 | import createPersistedState from "vuex-persistedstate" |
默认是存在 localStorage 里头的,关了浏览器照样存着。如果只是临时用用的数据,可以考虑存到 sessionStorage 中,具体方法参见位于 NPM 的项目主页。
环境变量
变量名要以 VUE_APP_
打头,丢在根目录下 .env.development.local
之类的文件里面。
引用方式:process.env.VUE_APP_VARNAME
站点标题
在项目根目录下创建 vue.config.js
文件,并写入:
1 | module.exports = { |
数据导入/导出
导出是先把一个 Array of Objects 编码成 JSON 格式字符串(JSON.Stringify()
),再把该字符串编码成 Base64 格式(window.btoa()
)并输出。
导入则读入一个 Base64 字符串、解码成 JSON 字符串(window.atob()
),再 parse 这个字符串至一个 Array of Objects (JSON.parse()
)并覆写存储在 Vuex 中的数据(this.$store.commit('Replacer', decodedArray)
)。
window.btoa()
接收的字符串不能含有非拉丁字母
看 JSON.stringify and unicode characters 的第一个回复,引用如下:
1 | var json = JSON.stringify(obj) |