最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Vue 如何 import 服务器上的js配置文件

    正文概述 掘金(8号的凌晨4点)   2021-04-08   619

    背景

    项目中有一个本地配置文件:

    // src/image-position.js
    module.exports = {
        label: '首页',
        value: 'home',
        data: [
          {
            label: '轮播',
            value: 'carousel'
          }
        ]
    }
    

    如何引用一个本地文件大家都知道:

    import ImagePosition from './image-position.js'
    

    现在需要把image-position.js文件丢到服务器上去,得到它的链接:

    xxx.com/static/imag…

    这个时候你直接引用文件地址自然是行不通的。

    import ImagePosition from 'https://xxx.com/static/image-position.js'
    
    // ERROR This dependency was not found
    

    实现

    1. 首先对image-position.js做一点小改造,暴露一个全局对象ImagePosition
    // 改造后的image-position.js
    
    (function (global, factory) {
      typeof exports === 'object' && typeof module !== 'undefined' 
        ? module.exports = factory() 
        : typeof define === 'function' && define.amd 
        ? define(factory) 
        : (global = global || self, global.ImagePosition = factory());
    }(this, (function () {
      'use strict';
      
      return {
        label: '首页',
        value: 'home',
        data: [
          {
            label: '轮播',
            value: 'carousel'
          }
        ]
      };
    })));
    
    
    1. 在vue.config.js文件里添加externals。
    module.exports = {
      configureWebpack: config => {
        config.externals = {
          'image-position': 'ImagePosition'
       }
      }
    }
    
    1. index.html 区分环境并引入js文件。
    // public/index.html
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <meta name="renderer" content="webkit">
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
        <title><%= htmlWebpackPlugin.options.title %></title>
      </head>
      <body>
        <div id="app"></div>
        <!-- built files will be auto injected -->
        <% if (NODE_ENV == 'production') { %>
          <script src="http://xxx.com/static/image-position.js"></script>
        <% } else { %>
          <script src="http://test.xxx.com/static/image-position.js"></script>
        <% } %>
      </body>
    </html>
    
    1. 结束上面的步骤后就可以愉快的引用image-position.js文件了。
    import ImagePosition from 'image-position'
    console.log(ImagePosition)
    // {label: '首页',value: 'home',data: [{label: '轮播', value: 'carousel'}]}
    

    补充vue-cli2.0下如何配置

    // build/webpack.base.conf.js
    module.exports = {
      externals: {
        // 新增
        'image-position': 'ImagePosition'
      }
    }
    
    // index.html
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <meta name="renderer" content="webkit">
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
        <title><%= htmlWebpackPlugin.options.title %></title>
      </head>
      <body>
        <div id="app"></div>
        <!-- built files will be auto injected -->
        <% if (process.env == 'production') { %>
          <script src="http://xxx.com/static/image-position.js"></script>
        <% } else { %>
          <script src="http://test.xxx.com/static/image-position.js"></script>
        <% } %>
      </body>
    </html>
    

    总结

    在Vue项目的打包体积优化中,cdn加速是常用的一种手段,上面其实就是cdn加速的实现内容,把第三方库通过script标签引入,大大减少打包的vendor.js文件大小。

    当我们想把本地文件放到服务器远程化时,关键在于实现步骤的第一步,其他的内容跟配置cdn加速的过程是一样的。

    最后

    码字不易,如果此文章对你有用,欢迎点赞!?


    起源地下载网 » Vue 如何 import 服务器上的js配置文件

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元