美文网首页前端Vue专辑Vue.js专区
vue之requireJs中引入vue-router的方法

vue之requireJs中引入vue-router的方法

作者: a333661d6d6e | 来源:发表于2018-11-21 17:12 被阅读4次

    requireJs简介
    参数配置
    requireJS 常用的方法与命令也就两个,因此requireJS使用起来非常简单。

    require
    define
    其中define是用于定义模块,而require是用于载入模块以及载入配置文件。

    define([id,deps,] callback);
    require(deps[,callback]);
    

    加载配置文件
    独立的引入配置文件也有两种方式,一种是通过script标签加载外部JS文件形式:

    <script src="js/require.js"></script>
    <script src="js/app.js"></script>
    

    另一种方式则是使用 require 提供的 data-main 属性,该属性是直接写在引入require.js的script标签上,在require.js 加载完毕时,会自动去加载配置文件 app.js。

    <script data-main="js/app" src="js/require.js"></script>
    

    通过 data-main 去加载入口文件,便会使配置对象中的 baseUrl 属性默认指向地址改为 app.js 所在的位置,相比之下我更加推荐这种方式,因为它更可能的方便快捷。

    <script data-main="js/app.js" src="js/require.js"></script>
    

    在main.js中所设置的脚本是异步加载的。所以如果你在页面中配置了其它JS加载,则不能保证它们所依赖的JS已经加载成功。
    常用参数配置
    urlArgs
    RequireJS获取资源时附加在URL后面的额外的query参数。作为浏览器或服务器未正确配置时的“cache bust”手段很有用。使用cache bust配置的一个示例:

    javascript:;urlArgs: "bust=" + (new Date()).getTime()
    

    在开发中这很有用,但请记得在部署到生成环境之前移除它。
    deps
    用于声明require.js在加载完成时便会自动加载的模块,值是一个数组,数组元素便是模块名。
    config
    config属性可以为模块配置额外的参数设定,其使用格式就是以模块名或者模块ID为key,然后具体的参数为value。
    shim
    shim为那些没有使用define()来声明依赖关系、设置模块的"浏览器全局变量注入"型脚本做依赖和导出配置。

    require.config({
      baseUrl : "./src",
      paths :{
        jquery:"./lib/jquery.min",
        vue:"./lib/vue",
        vueResource:"./lib/vue-resource.min",
        vueX:"./lib/vuex",
        api :"./api/index",
        lodash : "./lib/lodash.min",
        bootstrap : "./assets/js/bootstrap/js/bootstrap.min",
        ripples : "./assets/js/bootstrap-material-design/js/ripples.min",
        material:"./assets/js/bootstrap-material-design/js/material.min"
      },
      shim : {
        bootstrap : ['jquery'],
        ripples:['jquery'],
        material:['jquery'],
      },
      packages: [
        {
          name: 'components',
          location: 'component',
          main: 'components'
        },
        {
          name : "vuex",
          location :"vuex",
          main : "vuex"
        }//欢迎加入全栈开发交流圈一起学习交流:864305860
      ]//面向1-3年前端人员
    });//帮助突破技术瓶颈,提升思维能力
    

    vue项目
    requirejs配置

    require.config({
      baseUrl : "./src",
      paths :{
        vue:"./lib/vue",
        vueRouter: "./lib/vue-router",
        promise: "./lib/q",
        router: "./js/router",
        header: "./js/components/header"
      },
      shim : {
        vueRouter : ['vue']
      }
    });//欢迎加入全栈开发交流圈一起学习交流:864305860
    

    router配置

    define(["resolve"], function(resolve){
      return [
        {
          path: "/home",
          name: "home",
          component: resolve("../js/xx.js")
        },
        {
          path: "/news",
          name: "news",
          component: resolve("../js/xx.js")
        }
      ];
    });
    

    resolve.js

    define(["require", "promise"], function(require, Q){
      var resolve = function(dep) {
        return function() {
          if (!(dep instanceof Array)) {
            dep = [dep];
          }
          var deferred = Q.defer();
          require(dep, function(res) {
            deferred.resolve(res);
          });//欢迎加入全栈开发交流圈一起学习交流:864305860
          return deferred.promise;
        };
      };
      return resolve;
    });
    

    index

    <body>
      <header></header>
      <router-view></router-view>
    </body>
    require(["vue", "vueRouter", "router", "header"], function(vue, vueRouter, router, header) {
      vue.use(vueRouter);
      var routes = new vueRouter({
        routes: router
      });//欢迎加入全栈开发交流圈一起学习交流:864305860
      new Vue({
        router: routes,
        data: function(){
          return {
            aa: true
          };
        }
      }).$mount("body");
    });//欢迎加入全栈开发交流圈一起学习交流:864305860
    

    结语

    感谢您的观看,如有不足之处,欢迎批评指正。

    本次给大家推荐一个免费的学习群,里面概括移动应用网站开发,css,html,webpack,vue node angular以及面试资源等。
    对web开发技术感兴趣的同学,欢迎加入Q群:864305860,不管你是小白还是大牛我都欢迎,还有大牛整理的一套高效率学习路线和教程与您免费分享,同时每天更新视频资料。
    最后,祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。

    相关文章

      网友评论

        本文标题:vue之requireJs中引入vue-router的方法

        本文链接:https://www.haomeiwen.com/subject/lhkfqqtx.html