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


Posted in Javascript onJuly 18, 2018

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"
    }
  ]
});

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']
  }
});

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);
      });
      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
  });
  new Vue({
    router: routes,
    data: function(){
      return {
        aa: true
      };
    }
  }).$mount("body");
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
动态表格Table类的实现
Aug 26 Javascript
jQuery写的日历(包括日历的样式及功能)
Apr 23 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
Oct 17 Javascript
超级简单的jquery操作表格方法
Dec 15 Javascript
js实现点击链接后窗口缩小并居中的方法
Mar 02 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
Mar 02 Javascript
javascript原型模式用法实例详解
Jun 04 Javascript
JS实现滑动菜单效果代码(包括Tab,选项卡,横向等效果)
Sep 24 Javascript
使用原生js写ajax实例(推荐)
May 31 Javascript
详细分析JS函数去抖和节流
Dec 05 Javascript
微信小程序引入模块中wxml、wxss、js的方法示例
Aug 09 Javascript
Node.js 深度调试方法解析
Jul 28 Javascript
Vue隐藏显示、只读实例代码
Jul 18 #Javascript
详解vue中axios的封装
Jul 18 #Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
Jul 18 #Javascript
微信小程序将字符串生成二维码图片的操作方法
Jul 17 #Javascript
使用Vue实现图片上传的三种方式
Jul 17 #Javascript
vue的token刷新处理的方法
Jul 17 #Javascript
vue 权限认证token的实现方法
Jul 17 #Javascript
You might like
阿拉伯的咖啡与水烟
2021/03/03 咖啡文化
PHP IDE phpstorm 常用快捷键
2015/05/18 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
2016/07/14 PHP
cakephp常见知识点汇总
2017/02/24 PHP
jquery png 透明解决方案(推荐)
2010/08/21 Javascript
浅谈Javascript面向对象编程
2011/11/15 Javascript
Javascript字符串对象的常用方法简明版
2014/06/26 Javascript
Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法
2016/12/13 Javascript
jQuery中each循环的跳出和结束实例
2017/08/16 jQuery
angularjs使用gulp-uglify压缩后执行报错的解决方法
2018/03/07 Javascript
Vue 动态设置路由参数的案例分析
2018/04/24 Javascript
简单了解vue.js数组的常用操作
2019/06/17 Javascript
Vue 中可以定义组件模版的几种方式
2019/08/06 Javascript
javascript刷新父页面方法汇总详解
2019/10/10 Javascript
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
vue cli 3.0通用打包配置代码,不分一二级目录
2020/09/02 Javascript
解决Can't find variable: SockJS vue项目的问题
2020/09/22 Javascript
[53:15]Newbee vs Pain 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
Python首次安装后运行报错(0xc000007b)的解决方法
2016/10/18 Python
Odoo中如何生成唯一不重复的序列号详解
2018/02/10 Python
Python帮你识破双11的套路
2019/11/11 Python
美国内衣品牌:Leonisa
2016/08/14 全球购物
文明礼仪事迹材料
2014/01/09 职场文书
大学生职业生涯规划范文——找准自我,定位人生
2014/01/23 职场文书
国贸专业自荐信范文
2014/03/02 职场文书
工作保证书范文
2014/04/29 职场文书
公共场所禁烟标语
2014/06/25 职场文书
交通局领导班子群众路线教育实践活动对照检查材料思想汇报
2014/10/09 职场文书
学校政风行风评议工作总结
2014/10/21 职场文书
2014年医院工作总结
2014/11/20 职场文书
企业投资意向书
2015/05/09 职场文书
2015党建工作简报
2015/07/21 职场文书
2015年圣诞节寄语
2015/08/17 职场文书
Python中json.dumps()函数的使用解析
2021/05/17 Python
spring 项目实现限流方法示例
2022/07/15 Java/Android