New file |
| | |
| | | .DS_Store |
| | | node_modules |
| | | /dist |
| | | |
| | | # local env files |
| | | .env.local |
| | | .env.*.local |
| | | |
| | | # Log files |
| | | npm-debug.log* |
| | | yarn-debug.log* |
| | | yarn-error.log* |
| | | |
| | | # Editor directories and files |
| | | .idea |
| | | .vscode |
| | | *.suo |
| | | *.ntvs* |
| | | *.njsproj |
| | | *.sln |
| | | *.sw? |
New file |
| | |
| | | module.exports = { |
| | | presets: [ |
| | | '@vue/app' |
| | | ] |
| | | } |
New file |
| | |
| | | { |
| | | "name": "mytest", |
| | | "version": "0.1.0", |
| | | "private": true, |
| | | "scripts": { |
| | | "serve": "vue-cli-service serve", |
| | | "build": "vue-cli-service build", |
| | | "lint": "vue-cli-service lint" |
| | | }, |
| | | "dependencies": { |
| | | "core-js": "^2.6.5", |
| | | "iview": "^3.4.2", |
| | | "vue": "^2.6.10", |
| | | "vue-router": "^3.0.6", |
| | | "vuex": "^3.1.1" |
| | | }, |
| | | "devDependencies": { |
| | | "@vue/cli-plugin-babel": "^3.8.0", |
| | | "@vue/cli-plugin-eslint": "^3.8.0", |
| | | "@vue/cli-service": "^3.8.0", |
| | | "babel-eslint": "^10.0.1", |
| | | "eslint": "^5.16.0", |
| | | "eslint-plugin-vue": "^5.0.0", |
| | | "vue-template-compiler": "^2.6.10" |
| | | }, |
| | | "eslintConfig": { |
| | | "root": true, |
| | | "env": { |
| | | "node": true |
| | | }, |
| | | "extends": [ |
| | | "plugin:vue/essential", |
| | | "eslint:recommended" |
| | | ], |
| | | "rules": {}, |
| | | "parserOptions": { |
| | | "parser": "babel-eslint" |
| | | } |
| | | }, |
| | | "postcss": { |
| | | "plugins": { |
| | | "autoprefixer": {} |
| | | } |
| | | }, |
| | | "browserslist": [ |
| | | "> 1%", |
| | | "last 2 versions" |
| | | ] |
| | | } |
New file |
| | |
| | | <!DOCTYPE html> |
| | | <html lang="en"> |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1.0"> |
| | | <link rel="icon" href="<%= BASE_URL %>favicon.ico"> |
| | | <title>mytest</title> |
| | | </head> |
| | | <body> |
| | | <noscript> |
| | | <strong>We're sorry but mytest doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> |
| | | </noscript> |
| | | <div id="app"></div> |
| | | <!-- built files will be auto injected --> |
| | | </body> |
| | | </html> |
New file |
| | |
| | | <style scoped> |
| | | .layout{ |
| | | border: 1px solid #d7dde4; |
| | | background: #f5f7f9; |
| | | position: relative; |
| | | border-radius: 4px; |
| | | overflow: hidden; |
| | | } |
| | | .layout-logo{ |
| | | width: 100px; |
| | | height: 30px; |
| | | background: #5b6270; |
| | | border-radius: 3px; |
| | | float: left; |
| | | position: relative; |
| | | top: 15px; |
| | | left: 20px; |
| | | } |
| | | .layout-nav{ |
| | | width: 420px; |
| | | margin: 0 auto; |
| | | margin-right: 20px; |
| | | } |
| | | .layout-footer-center{ |
| | | text-align: center; |
| | | } |
| | | </style> |
| | | <template> |
| | | <div id="app"> |
| | | <Layout> |
| | | <Header> |
| | | <Menu mode="horizontal" theme="dark" active-name="1"> |
| | | <div class="layout-logo"></div> |
| | | <div class="layout-nav"> |
| | | <MenuItem name="1"> |
| | | <Icon type="ios-navigate"></Icon> |
| | | Item 1 |
| | | </MenuItem> |
| | | <MenuItem name="2"> |
| | | <Icon type="ios-keypad"></Icon> |
| | | Item 2 |
| | | </MenuItem> |
| | | <MenuItem name="3"> |
| | | <Icon type="ios-analytics"></Icon> |
| | | Item 3 |
| | | </MenuItem> |
| | | <MenuItem name="4"> |
| | | <Icon type="ios-paper"></Icon> |
| | | Item 4 |
| | | </MenuItem> |
| | | </div> |
| | | </Menu> |
| | | </Header> |
| | | <Content style="height:calc(100vh - 64px); overflow-y: auto"> |
| | | <router-view></router-view> |
| | | </Content> |
| | | <!-- <Footer></Footer> --> |
| | | </Layout> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | export default { |
| | | name: 'app' |
| | | } |
| | | </script> |
New file |
| | |
| | | <template> |
| | | <div class="hello"> |
| | | <h1>{{ msg }}</h1> |
| | | <p> |
| | | For a guide and recipes on how to configure / customize this project,<br> |
| | | check out the |
| | | <a href="https://cli.vuejs.org" target="_blank" rel="noopener">vue-cli documentation</a>. |
| | | </p> |
| | | <h3>Installed CLI Plugins</h3> |
| | | <ul> |
| | | <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel" target="_blank" rel="noopener">babel</a></li> |
| | | <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint" target="_blank" rel="noopener">eslint</a></li> |
| | | </ul> |
| | | <h3>Essential Links</h3> |
| | | <ul> |
| | | <li><a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a></li> |
| | | <li><a href="https://forum.vuejs.org" target="_blank" rel="noopener">Forum</a></li> |
| | | <li><a href="https://chat.vuejs.org" target="_blank" rel="noopener">Community Chat</a></li> |
| | | <li><a href="https://twitter.com/vuejs" target="_blank" rel="noopener">Twitter</a></li> |
| | | <li><a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a></li> |
| | | </ul> |
| | | <h3>Ecosystem</h3> |
| | | <ul> |
| | | <li><a href="https://router.vuejs.org" target="_blank" rel="noopener">vue-router</a></li> |
| | | <li><a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a></li> |
| | | <li><a href="https://github.com/vuejs/vue-devtools#vue-devtools" target="_blank" rel="noopener">vue-devtools</a></li> |
| | | <li><a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener">vue-loader</a></li> |
| | | <li><a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">awesome-vue</a></li> |
| | | </ul> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | name: 'HelloWorld', |
| | | props: { |
| | | msg: String |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <!-- Add "scoped" attribute to limit CSS to this component only --> |
| | | <style scoped> |
| | | h3 { |
| | | margin: 40px 0 0; |
| | | } |
| | | ul { |
| | | list-style-type: none; |
| | | padding: 0; |
| | | } |
| | | li { |
| | | display: inline-block; |
| | | margin: 0 10px; |
| | | } |
| | | a { |
| | | color: #42b983; |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <div class="layout"> |
| | | <input type="text" v-model="age" /> |
| | | <input type="button" v-on:click="setAge" value="点我" /> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | age: 10 |
| | | } |
| | | }, |
| | | methods: { |
| | | setAge: function() { |
| | | this.$store.commit('setAge', this.age); |
| | | } |
| | | }, |
| | | mounted: function() { |
| | | this.age = this.$store.state.age; |
| | | } |
| | | } |
| | | </script> |
New file |
| | |
| | | <template> |
| | | <div class="layout"> |
| | | <h3>{{mAge}}</h3> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return {} |
| | | }, |
| | | computed: { |
| | | mAge() { |
| | | return this.$store.state.age; |
| | | } |
| | | } |
| | | } |
| | | </script> |
New file |
| | |
| | | let util = { |
| | | |
| | | }; |
| | | util.title = function (title) { |
| | | title = title ? title : 'iView project'; |
| | | window.document.title = title; |
| | | }; |
| | | |
| | | export default util; |
New file |
| | |
| | | import Vue from 'vue' |
| | | import VueRouter from 'vue-router' |
| | | import Routers from './router' |
| | | import store from './vuex/store' |
| | | import iView from 'iview' |
| | | import Util from './libs/util' |
| | | import App from './App.vue' |
| | | import 'iview/dist/styles/iview.css' |
| | | |
| | | // 添加vue-router |
| | | Vue.use(VueRouter); |
| | | |
| | | // 添加iview基础组件 |
| | | Vue.use(iView); |
| | | |
| | | Vue.config.productionTip = false |
| | | |
| | | const RouterConfig = { |
| | | mode: 'history', |
| | | routes: Routers |
| | | }; |
| | | |
| | | // 定义路由 |
| | | const router = new VueRouter(RouterConfig); |
| | | |
| | | router.beforeEach((to, from, next) => { |
| | | iView.LoadingBar.start(); |
| | | Util.title(to.meta.title); |
| | | next(); |
| | | }); |
| | | |
| | | router.afterEach((to, from, next) => { |
| | | iView.LoadingBar.finish(); |
| | | window.scrollTo(0, 0); |
| | | }); |
| | | |
| | | |
| | | new Vue({ |
| | | router, |
| | | store, |
| | | render: h => h(App), |
| | | }).$mount('#app') |
New file |
| | |
| | | const routers = [ |
| | | { |
| | | path: '/', |
| | | meta: { |
| | | title: '首页' |
| | | }, |
| | | component: (resolve) => require(['./views/index.vue'], resolve) |
| | | } |
| | | ]; |
| | | export default routers; |
New file |
| | |
| | | <template> |
| | | <Layout> |
| | | 内容 |
| | | </Layout> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return {} |
| | | } |
| | | } |
| | | </script> |
New file |
| | |
| | | import Vue from 'vue' |
| | | import Vuex from 'vuex' |
| | | Vue.use(Vuex); |
| | | |
| | | const store = new Vuex.Store({ |
| | | state: { |
| | | age: 18 |
| | | }, |
| | | mutations: { |
| | | setAge: function(state, age) { |
| | | state.age = age; |
| | | } |
| | | } |
| | | }); |
| | | |
| | | export default store; |