刚开始接触Vue,想通过一些实例对其使用更加熟悉。
一、搭建过程与环境
网上已经有很多教程可以参考,这里简单说一下流程。
- 安装node.js,官网下载,直接下载node.js最新版本,避免版本过低影响使用
- 安装vue-cli
1 | $npm install vue-cli -g |
以上每一步步骤完成之后,使用1
$xxx -v
验证是否安装成功,但vue -V这里V需要大写。
如下图,出现相应的版本号,则说明安装成功。
vue-cli脚手架的优势:
- 有一套成熟的vue项目架构设计,能够快速初始化一个Vue项目。
- vue-cli是官方支持的一个脚手架,会随本版本进行迭代更新。
- vue-cli提供了一套本地的node测试服务器,使用vue-cli自己提供的命令,就可以启动服务器。
- 有一套vue结构配置,它可以帮助我们写好vue.js代码快速构建项目的工具。
- 集成打包上线方案。
二、创建项目
官方文档参考:https://vuejs-templates.github.io/webpack/
1.创建一个基于webpack模板的新项目1
$vue init webpack my-project
my-project是项目的名称,由于目前还用不上太多别的功能,全都选择no。
2.进入目录
1 | $cd my-project |
3.安装项目依赖
1 | $npm install |
4.启动
1 | $npm run dev |
到这里已经成功创建了一个vue项目。
5.初始项目目录及说明:
https://blog.csdn.net/Solo95/article/details/72355098
6.打开浏览器,将看到右边的大logo:
三、实现过程
包含三个组件:根组件App.vue展现内容、 输入表单部分组件Form.vue和输出展示部分组件Output.vue。
首先在components目录下创建两个组件:Form.vue和Output.vue
1. Form.vue表单部分
1)
- 主要结构
2)
- 给input绑定值==v-model=”textTodo”== ,并在data中声明
- 实现点击button,监听事件 ==v-on:click=”formSubmit()”== 拿到输入的值
- 采用事件注册的方法==this.$emit()==,默认一个参数,第一个参数formSubmit2为方法
- $emit自定义事件Vue自定义事件是为组件间通信设计,自定义事件提供 ==$on、$off、$once、$emit== 几个api
2. App.vue
1)
- 根组件调用两个子组件的地方,是两者的联系点,所以在调用Form组件的地方监听this.$emit()中的方法
- 根组件中需要用一个方法接收传过去的待翻译的内容,所以在Form组件的this.$emit()中加上参数textTodo,返回根组件transText方法添加形参text
2)
使用 https://tech.yandex.com/ 的翻译Tranlsate API
这里需要一个API Key,必须通过key请求翻译的一些文本内容
创建属于自己的API keys
- 在document里可以看到有很多语言,需要什么语言就将其code写入表单select的option的value值中去。
3)
- 在使用http请求对应的接口前必须先安装Vue resource网络请求模块
1 | $npm install vue-resoure --save |
- 在main.js中引入这个模块,用Vue.use使用中间件引入,接着就可以使用http了,在发送请求后,使用then方法来处理响应结果,then方法有两个参数,第一个参数是响应成功时的回调函数
1 | // Lambda写法 |
4)
- 之前给Form的方法transText()参数有languange和text
==[解决选中语言的问题]==
select上绑定一个==v-model=”language”== 在data中初始化,与之前传text同理,给formSubmit方法加一个参数language就好了,http.get中将lang的值修改为language
请求完的返回值response通过箭头函数then返回,打印response,查看在body中有个text数组,我们需要的已翻译好的文本为数组中第0个值,因此使用==response.body.text[0]==
接着将这个值赋值给transedText,而这个值应该传到Output.vue中去显示
绑定属性==v-text=”transedText”==
3.Output.vue
- 很简单,只需定义一个属性props,用于传值transedText,并显示出来。
- 在vue中,组件实例的作用域是孤立的。这意味着不能并且不应该在子组件的模板内直接引用父组件的数据。可以使用 props 把数据传给子组件。
四、样式
https://github.com/iview/iview
iview与使用vue-resource差不多
五、打包
vue-cli可以直接用以下命令快速打包1
$npm run build
第一次打包好后打开是一片空白
此处需要注意将文件index.js中的==assetsPublicPath==值改为相对路径(==/–>./==),否则打包好后请求不到资源显示空白,因为vue是使用的绝对路径。
改了以后整体页面显示,但静态文件还是没有
这两个404的文件所在路径能被正确访问应该是
1 | /static/fonts/ionicons.05acfdb.woff |
但是前面对了两级目录/static/css所以找不到
参考https://juejin.im/post/5a75c8ce5188257a624c9ff1 顺利解决!
之后只需要将dist文件夹中的内容放到服务器上就可以访问了!
六、收获与不足
收获:
熟悉基础语法、核心功能、基础概念、使用iView安装依赖的模块、调用API的方法和构建项目到打包的过程。
不足:
布局简单,功能单一。