上回书说到,当老系统中设置过seajs.config中的paths,而后续新增代码受到了paths的影响时怎么办呢?
比如如下代码:
seajs.config({
paths: {
'js': 'xxxxxxx/xxxxx'
},
alias: {
'a': 'js/a.js'
}
});
seajs.use('a');
这样a模块的js引入路径就变成了xxxxxxx/xxxxx/js/a.js。那么在不改动原有paths的情况下,我们如何按照想要的路径加载a代码呢?
可以使用'/js/a.js'来进行加载,因为paths对alias的解析代码是不会为最前端有‘/’的路径进行配置的。
这里就有必要看一看seajs是怎么处理路径的了,处理URI路径的代码如下,
function id2Uri(id, refUri) {
if (!id) return ""
id = parseAlias(id)
id = parsePaths(id)
id = parseAlias(id)
id = parseVars(id)
id = parseAlias(id)
id = normalize(id)
id = parseAlias(id)
var uri = addBase(id, refUri)
uri = parseAlias(uri)
uri = parseMap(uri)
return uri
}
可以看到这里会先解析alias,然后使用paths对alias进行拼装,再使用vars对alias进行处理,最后为uri进行base处理。
具体处理过程,这里就不赘述了,各位看官可以去参看一下seajs的源码。
分享到:
相关推荐
**Seajs 官方小实例详解** Seajs 是一个用于浏览器端的模块加载器,它遵循 CommonJS 规范,让 JavaScript 开发者能够在浏览器环境中实现模块化开发,提高代码的可维护性和复用性。Seajs 的核心理念是通过模块化解决...
本手册将详细阐述Seajs的核心概念、使用方法以及如何通过它来构建高效的前端应用。 1. **模块化编程**:Seajs基于CommonJS规范,引入了模块化编程的概念,允许开发者将复杂的JavaScript代码拆分为可重用的模块,...
Seajs 是一个轻量级的前端模块加载器,它的出现是...不过随着Webpack、Rollup等现代构建工具的普及,Seajs 在大型复杂项目中的使用逐渐减少,但在理解和学习前端模块化思想的过程中,Seajs 仍是一个值得学习的案例。
本教程将带你快速了解并掌握Seajs的使用,让你在5分钟内对这个强大的工具有一个基本的认识。 **一、Seajs的基本概念** Seajs的核心理念是模块化,它允许我们将JavaScript代码分割成多个独立的模块,每个模块都有...
例如,你可以使用`seajs.preload`来预先加载一些常用模块,或者使用`seajs.config`配置项来定义模块的加载策略。 在实际开发中,SeaJS 可以与构建工具(如Gulp、Webpack)配合使用,进行模块的打包和优化,进一步...
要在项目中使用Seajs,首先需要从官方网站或者其他可靠的源获取最新版本的Seajs文件。下载完成后,将`seajs`文件放置在项目的公共目录下,通常是`js`或`lib`目录。确保这个位置能让所有需要使用Seajs的页面都能访问...
三、Seajs使用方法 1. **配置(config)**:通过`seajs.config()`方法配置seajs,可以设置base路径、alias别名、paths路径映射、preload预加载模块等。 2. **加载模块(use)**:使用`seajs.use()`方法加载模块,...
1. **Seajs 使用指南**:详细讲解如何安装、配置和使用 Seajs,包括如何定义和引用模块,以及如何配置路径和插件。 2. **API 参考**:列出 `seajs.use`、`seajs.config`、`seajs.data` 等核心 API 的使用方法和参数...
模块内部,我们可以使用 `define` 函数来定义模块,它接受三个参数:模块标识(可选)、依赖的模块(可选)和模块的实现(函数或对象): ```javascript define('module-name', ['dependency1', 'dependency2'], ...
同时,它使用`define`函数来定义模块,这个函数接收三个参数:模块ID、依赖列表和回调函数,回调函数的返回值被视为模块的出口。 阅读Seajs源码有助于提升对JavaScript模块化和异步加载的理解。通过分析其核心功能...
Seajs使用`define`函数来定义模块,它接受三个参数:模块标识(id),依赖的模块(deps)和模块的实现(factory)。模块标识通常是相对或绝对路径,用于区分不同的模块;依赖的模块是一个数组,列出当前模块需要的...
4. **模块加载**:使用 `seajs.use` 方法可以加载指定模块,并执行回调函数。在回调函数中,可以访问到已加载的模块,进行依赖注入。 5. **模块路径解析**:Seajs 支持相对路径和绝对路径,可以通过 `id` 参数指定...
SeaJS 虽然在中国有一定影响力,但整体社区规模较小。 4. **API 设计**:SeaJS 的 API 设计较为简洁,而 RequireJS 的 API 功能更强大,但可能对新手来说稍显复杂。 5. **使用场景**:SeaJS 适合追求简洁和易用性...
本文将深入解析Seajs 2.2.0版本的源码,探讨其核心机制、设计理念以及如何使用它来组织和管理前端项目。 首先,Seajs的核心功能是解决JavaScript的异步加载问题,它允许开发者按照模块化的方式来编写代码,每个模块...
这样,该插件就可以在Seajs环境下通过`seajs.use`来加载并使用了。 ## jQuery插件转换为Seajs插件 jQuery插件转换为Seajs插件的关键在于将依赖的jQuery引入,并确保插件代码在jQuery加载完成后执行。使用`seajs.use...
2. **加载**:使用`seajs.use`或`seajs.require`来加载模块。`use`方法会加载指定的模块并执行回调函数,而`require`方法仅加载模块,不执行任何操作。 3. **解析**:SeaJS解析模块路径,根据配置的路径映射找到实际...
1. **模块标识符**:Seajs使用URI(统一资源标识符)作为模块标识,允许开发者通过URL路径来引用模块。例如,`seajs.use('path/to/module')`。 2. **模块加载**:Seajs的核心功能之一是动态加载模块。它通过异步...
"grunt-react-seajs"就是一个这样的工具,它是一个专门为前端开发者设计的Grunt插件,旨在帮助开发者将React组件转换为SeaJS模块,使得在不支持ES6模块语法的环境中也能顺利地使用React组件。下面我们将深入探讨这个...
通过使用Seajs,开发者可以将复杂的代码分解为独立的模块,每个模块都有自己的作用域,避免了全局变量污染,同时提高了代码的复用性和可维护性。 在Seajs项目中,"seajs-master"可能是主分支或者完整版的项目源码...
通过使用seajs.use()方法,可以按需加载依赖,确保代码的按序执行。Sea.js还支持CMD(Common Module Definition)规范,使得代码更易于维护和扩展。 结合使用Knockout和Sea.js,可以构建出高效的前端应用。例如,你...