首先这篇文章是写给Vue 2.0新手的,老司机基本不用看了。php
当咱们刚接触vue的时候,特别是对于第一次用前端框架的同窗来讲,心情能够说是比较激动的,框架带来的种种新体验,是之前jQuery没法给你的兴奋和知足感。可是在体验了几个demo的新鲜感以后,咱们就要考虑如何把框架结合到咱们实际的开发中如何应用的问题了。css
下面我主要总结三个和生产发布相关的问题:资源文件发布文件夹配置,图片文件的引用,以及后台接口调试方法。html
通常项目都是用vue-cli脚手架搭建项目,而后编写本身的代码。vue-cli脚手架生成的配置,默认资源文件都在static文件夹下面,build发布的js和css文件也是在static文件夹下面,index.html文件则是和static造成相对路径关系。前端
而实际咱们的生产发布环境中,页面文件和资源文件不必定在同一目录下,页面文件和js,css文件也不在同一目录下。vue
以php的Yii2环境为例,页面文件通常都放在views文件夹,页面访问路径多是 “http://xxxx.com/index.php/sal...” 这样的url形式。而js,css,image等资源文件则须要放在web文件夹下,访问路径则是从根目录开始访问的。若是在web目录下新建static文件夹,访问路径是 “http://xxxx.com/static/images...” 这样的url形式。实际开发中咱们不能把全部项目资源文件都放在web目录下的static文件夹,须要按项目新建不一样的文件夹,在每一个项目文件夹里再新建js,css,images等文件夹来安放各自的资源文件,访问路径应该是 “http://xxxx.com/sales-task/im...” 这样的url形式。webpack
所以修改配置文件以下:web
vue项目中有2种图片引用方式,一种是静态引用,按照咱们上面的资源文件夹配置,图片路径直接写到template的html代码里,格式示例:vue-cli
<img src="/sales-task/images/logo.png">
这样在开发模式和发布模式下都能正常引用到图片,好处是和正常html代码格式同样,方便代码的编写和修改。缺点是图片文件地址是静态的,替换图片后若是不手动更换文件名没法解决缓存问题。后端
另外一种方法就是更科学的模块化方式,用require引用图片,这样发布后图片文件名也会生成惟一识别码,图片修改后就会从新生成不一样的文件名,从而能避免缓存问题,另外小图片还能够直接生成base64码,减小文件请求。require引用也有两种形式,直接写在:src属性上(注意这里和静态引用不同,不是src而是:src了):api
<img :src="require('../assets/images/logo.png')">
或者把图片引用数据写在data绑定数据里:
<img :src="logoImg"> ... <script> export default { data() { return { logoImg:require('../assets/images/logo.png') } } } </script>
固然我仍是推荐绑定数据的方法,代码看起来更清爽,也便于维护。
另外须要说明的是在vue的<style></style>块内的样式里定义的background-image引用图片不须要require引用,直接经过相对路径引入就能够实现上面相同的效果。
这里后台接口调试指的是在开发模式下的调试。
vue的开发模式是经过webpack-dev-server启动一个本地服务,因此在开发模式下调用后台接口就产生了跨域问题。这里要说明一下,若是要调用的后台接口自己就是跨域的接口,也就是说页面和接口文件不在同一个域名下,跨域问题须要在后端设置,这时其实vue项目不须要特殊配置了,由于本地访问和发布后访问都是跨域的,解决后端跨域就都解决了。因此咱们这里要配置的,仍是针对发布之后页面和接口不存在跨越问题,只是开发模式下本地服务和接口产生的跨越问题,如何解决。
首先仍是打开config/index.js,找到module.exports里的dev,里面有一项proxyTable,默认是空的,咱们要按照咱们的接口路径,修改以下:
proxyTable: { '/sales-task-api':{ target:"http://xxxxx.com/sales-task-api", changeOrigin:true, pathRewrite: {"^/sales-task-api" : "/"} } }
注意上面3个地方的接口路径名称(示例中的"sales-task-api")要保持一致。
例如实际要调用的接口地址是:http://xxxxx.com/sales-task-a... ,通过这样配置设置后,咱们在vue中就能够经过 "/sales-task-api/get-user-list" 这样的地址调用,也不会产生跨域问题。同时由于是采用的根目录访问路径,在生产发布之后也不会产生接口访问路径错误问题。