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 相关文章推荐
javascript 获取表单file全路径
Dec 31 Javascript
js 利用className得到对象的实现代码
Nov 15 Javascript
原生javascript实现DIV拖拽并计算重复面积
Jan 02 Javascript
jQuery检测鼠标左键和右键点击的方法
Mar 17 Javascript
浅谈javascript中的闭包
May 13 Javascript
基于jquery实现select选择框内容左右移动添加删除代码分享
Aug 25 Javascript
BootStrap点击下拉菜单项后显示一个新的输入框实现代码
May 16 Javascript
Vue.js学习示例分享
Feb 05 Javascript
三种方式实现瀑布流布局
Feb 10 Javascript
Angular.js中数组操作的方法教程
Jul 31 Javascript
JS随机数产生代码分享
Feb 24 Javascript
vue.js iview打包上线后字体图标不显示解决办法
Jan 20 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
教你如何使用php session
2013/10/28 PHP
php+js实现异步图片上传实例分享
2014/06/02 PHP
PHP获取POST数据的几种方法汇总
2015/03/03 PHP
php中使用key,value,current,next和prev函数遍历数组的方法
2015/03/17 PHP
php实现encode64编码类实例
2015/03/24 PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
2017/04/05 PHP
Aster vs KG BO3 第一场2.19
2021/03/10 DOTA
javascript如何创建表格(javascript绘制表格的二种方法)
2013/12/10 Javascript
调用HttpHanlder的几种返回方式小结
2013/12/20 Javascript
jquery.cookie.js用法实例详解
2015/12/25 Javascript
js 连续赋值的简单实现
2016/06/13 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
关于微信上网页图片点击全屏放大效果
2016/12/19 Javascript
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
微信小程序实现简单评论功能
2018/11/28 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
2019/04/07 Javascript
JQuery通过键盘控制键盘按下与松开触发事件
2020/08/07 jQuery
[17:45]DOTA2 HEROES教学视频教你分分钟做大人-军团指挥官
2014/06/11 DOTA
浅谈python import引入不同路径下的模块
2017/07/11 Python
python中的迭代和可迭代对象代码示例
2017/12/27 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
2020/03/16 Python
localstorage和sessionstorage使用记录(推荐)
2017/05/23 HTML / CSS
荷兰优雅女装网上商店:Heine
2016/11/14 全球购物
业务经理岗位职责
2013/11/11 职场文书
工商管理专业职业生涯规划
2014/01/01 职场文书
运动会广播稿300字
2014/01/10 职场文书
求职简历的自我评价
2014/01/31 职场文书
优秀志愿者事迹材料
2014/02/03 职场文书
出国留学导师推荐信
2015/03/26 职场文书
学习经验交流会演讲稿
2015/11/02 职场文书
使用numpy实现矩阵的翻转(flip)与旋转
2021/06/03 Python
JavaGUI模仿QQ聊天功能完整版
2021/07/04 Java/Android
DIV CSS实现网页背景半透明效果
2021/12/06 HTML / CSS
python神经网络学习 使用Keras进行简单分类
2022/05/04 Python
服务器间如何实现文件共享
2022/05/20 Servers