一个小的V项目框架

很长时间没用Vue了,写个小的项目总结下,当然只是随手写的小东西,没有ajax,没有proxy。

项目结构:

src
    assets
       ...
    components
        ...
    static
        ...
    App.vue
    main.js
    routerConfig.js
index.html
package.json
webpack.config.js

简单解释下:
App.vue是入口文件,里面有还有些其他组件;
main.js里面,创建一个Vue对象,引入App组件(render: h => h(App) 也可以写成 components: { App }),
引入路由配置文件routerConfig.js;
routerConfig.js里面通过Vue.use(VueRouter)来安装路由插件,并对路由进行配置。
主要就是这三个文件,其余组件进行补充。

1.简单的webpack 配置

entry: 入口文件;
output: 出口文件;
__dirname: nodejs系统级别的变量,表示当前目录;
process.env: process是nodejs的一个全局变量,process.env返回一个包含用户环境信息的对象;
if判断,当生产环境时,使用另一套配置方案;
简单配置没什么好说的。

2.路由

路由配置在routerConfig.js里面,要使用路由,首先需要安装路由插件Vue.use(VueRouter),然后在跟组件(main.js)里注册;
切记routes数组里面对象的参数是component,没有“s”,若是加了“s”会报错;
<router-link>点击导航,通过to属性指定目标地址,当然Vue实例内部也可以通过this.$router.push(...)进行导航;
<router-view>渲染路径匹配到的视图组件;
嵌套路由写法类似,这里就不多说了。

3.Vuex

同样需要先Vue.use(Vuex),然后在跟组件里注册,这样子组件就可以通过this.$store访问到;
一个简单的状态存储,由于action可以异步操作,这里通过setTimeout模拟异步,使用了Promise来组合多个action,
所以点击1s后+101执行的操作是先执行+1操作,完成后再执行+100操作。

git地址: https://github.com/fangzezhang/vue-analy

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以给你一个示例项目,使用MVC和Vue进行开发。 首先,我们来了解一下MVC和Vue的概念。 MVC(Model-View-Controller)是一种软件架构模式,将应用程序分为三个部分:模型(数据)、视图(用户界面)和控制器(业务逻辑)。这种架构模式的好处是,使得应用程序的各个部分可以独立地进行开发和维护,降低了耦合度,提高了可维护性和可扩展性。 Vue是一款流行的JavaScript框架,用于构建用户界面。它采用组件化的思想,将UI界面分解成一个个可重用的组件,方便开发和维护。 下面,我们来实现一个简单的待办事项列表应用,使用MVC和Vue进行开发。 首先,我们来定义数据模型。在models文件夹下创建一个TodoItem.js文件,定义一个TodoItem类,包含id、title、completed三个属性。 ```javascript class TodoItem { constructor(id, title, completed) { this.id = id; this.title = title; this.completed = completed; } } ``` 接下来,我们来实现视图部分。在views文件夹下创建一个TodoView.js文件,定义一个TodoView类,包含一个渲染方法render和一个事件绑定方法bindEvents。在render方法中,我们使用Vue的模板语法渲染待办事项列表,使用v-for指令遍历todoList数组,使用v-bind指令绑定属性和方法。在bindEvents方法中,我们使用Vue的事件绑定语法绑定点击事件和输入事件。 ```javascript class TodoView { constructor() { this.todoList = []; this.app = new Vue({ el: '#app', data: { todoList: this.todoList, newTodo: '' }, methods: { addTodo: this.addTodo.bind(this), removeTodo: this.removeTodo.bind(this), clearCompleted: this.clearCompleted.bind(this) } }); } render() { this.app.todoList = this.todoList; } bindEvents(controller) { const addTodoInput = document.querySelector('#add-todo-input'); addTodoInput.addEventListener('keyup', event => { if (event.keyCode === 13 && event.target.value.trim()) { controller.addTodo.bind(controller, event.target.value.trim())(); event.target.value = ''; } }); } addTodo(title) { const newTodoItem = new TodoItem(Date.now(), title, false); this.todoList.push(newTodoItem); } removeTodo(todoItem) { const index = this.todoList.indexOf(todoItem); if (index > -1) { this.todoList.splice(index, 1); } } clearCompleted() { this.todoList = this.todoList.filter(todoItem => !todoItem.completed); } } ``` 最后,我们来实现控制器部分。在controllers文件夹下创建一个TodoController.js文件,定义一个TodoController类,包含一个数据模型和一个视图模型。在构造函数中,我们创建一个TodoView实例,并调用其渲染方法。在addTodo、removeTodo和clearCompleted方法中,我们修改数据模型,并调用TodoView的渲染方法更新视图。 ```javascript class TodoController { constructor() { this.todoModel = new TodoModel(); this.todoView = new TodoView(); this.todoView.bindEvents(this); this.todoView.render(); } addTodo(title) { this.todoModel.addTodo(title); this.todoView.render(); } removeTodo(todoItem) { this.todoModel.removeTodo(todoItem); this.todoView.render(); } clearCompleted() { this.todoModel.clearCompleted(); this.todoView.render(); } } ``` 在index.html中,我们引入Vue和TodoController.js,并在body中添加一个id为app的div作为Vue的挂载点。 ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Todo List</title> </head> <body> <div id="app"> <input id="add-todo-input" type="text" placeholder="Add a new todo..."> <ul> <li v-for="todoItem in todoList" :key="todoItem.id"> <input type="checkbox" v-model="todoItem.completed"> <span v-bind:class="{completed: todoItem.completed}">{{todoItem.title}}</span> <button v-on:click="removeTodo.bind(null, todoItem)">X</button> </li> </ul> <button v-on:click="clearCompleted">Clear completed</button> </div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script src="models/TodoItem.js"></script> <script src="views/TodoView.js"></script> <script src="controllers/TodoController.js"></script> <script> const todoController = new TodoController(); </script> </body> </html> ``` 现在,我们已经完成了一个简单的待办事项列表应用,使用了MVC和Vue进行开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值