seajs

学习 Sea.js 笔记(三)

北城余情 提交于 2019-12-22 21:38:31
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> == require 书写约定 == 必须名为 require. define(function(require) { // 正确写法... ... }); 不用修改, 不要重命名 require (可能构造工具会查找名字 require?) 后续文档说是通过正则匹配 require 的方式来得到依赖信息. 因此必须遵守书写约定, 否则无法获得依赖项[]. require 的参数值必须是直接量: require('module'); // 不能用变量, 运算等. 简单性原则: 设计必须简单,这既是对实现的要求,也是对接口的要求。 实现的简单要比接口的简单更加重要。简单是设计中需要第一重视的因素。 CMD模块的压缩,自动构建: 1. 提取: 根据源文件, 找到模块标识 id 和依赖 dependencies, 转为临时文件. 2. 压缩: 调用 js 压缩工具进行压缩. 第1步相对其他构建多出来的步骤. 由于使用正则匹配方式获取 id, depend, 某些特定情形无法获取, 请避免. 推荐采用配套的构建工具压缩, 合并代码. (合并前要提取 id 等). == 模块的加载启动 == 1. 页面引入 sea.js (也可内嵌于网页) 2. seajs.use('xxx', callback?); == 调试 ==

seajs require("jquery")返回null解决办法

爷,独闯天下 提交于 2019-12-22 21:25:00
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> seajs require("jquery")返回null解决方法 seajs.use 某具名模块时发现其引用为 null 的问题,或是移动了文件位置导致引用为 null 或者 object is not function 的问题。这些问题都指向 Sea.js 的一个基本约定原则:ID 和路径匹配原则。 使用 seajs.use 或 require 进行引用的文件,如果是具名模块(即定义了 ID 的模块),会把 ID 和 seajs.use 的路径名进行匹配,如果一致,则正确执行模块返回结果。反之,则返回 null。 首先可以先参 看这个issue:https://github.com/seajs/seajs/issues/962 由于在 Sea.js 中,所有 JavaScript 模块都遵循 CMD(Common Module Definition) 模块定义规范。该规范明确了模块的基本书写格式和基本交互规则。 jQuery 1.7开始支持AMD规范,可以和遵循AMD规范的脚本加载器协作,比如RequireJS或者curl.js。 所以需要调整JQuery源码,如下: //old if ( typeof define === "function" && define.amd && define.amd

对 Sea.js 进行配置 seajs.config

限于喜欢 提交于 2019-12-22 21:24:46
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 可以对 Sea.js 进行配置,让模块编写、开发调试更方便。 seajs.config seajs.config(options) 用来进行配置的方法。 seajs.config({ // 别名配置 alias: { 'es5-safe': 'gallery/es5-safe/0.9.3/es5-safe', 'json': 'gallery/json/1.0.2/json', 'jquery': 'jquery/jquery/1.10.1/jquery' }, // 路径配置 paths: { 'gallery': 'https://a.alipayobjects.com/gallery' }, // 变量配置 vars: { 'locale': 'zh-cn' }, // 映射配置 map: [ ['http://example.com/js/app/', 'http://localhost/js/app/'] ], // 预加载项 preload: [ Function.prototype.bind ? '' : 'es5-safe', this.JSON ? '' : 'json' ], // 调试模式 debug: true, // Sea.js 的基础路径 base: 'http://example

Seajs -- 路径

非 Y 不嫁゛ 提交于 2019-12-22 21:13:42
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 关于路径 分为 相对 与 顶级 标识。以 . 或 .. 开头,则为相对标识 。以 小驼峰字符串 开关,则为顶级标识。 // 假设 base 路径是:http://example.com/assets/ // 在模块代码里: require.resolve('gallery/jquery/1.9.1/jquery'); // => http://example.com/assets/gallery/jquery/1.9.1/jquery.js Seajs除了相对与顶级标识之外,还可以使用普通路径来加载模块。 就到当前页面的脚本分析(可以右键查看源码) //sea.js的路径,即 base 路径,相对于当前页面 <script src="http://yslove.net/actjs/assets/sea-modules/seajs/2.1.1/sj.js"></script> <script type="text/javascript"> //配置Seajs seajs.config({ alias: { //顶级标识,基于 base 路径 'actjs': 'actjs/core/0.0.7/core.js', // => http:// 'position': 'actjs/util/0.0.2

sea.js使用

假装没事ソ 提交于 2019-12-22 21:09:15
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> <script type="text/javascript" src="./sea.js"></script> <script> // 设置一些参数 seajs.config({ debug: true, // debug为false时,在模块加载完毕后会移除head中的script标签 base: './js/', // 通过路径加载其他模块的默认根目录 alias: { // 别名 jquery: 'http://modules.seajs.org/jquery/1.7.2/jquery.js' } }) //调用 seajs.use('main', function(main) { alert(main) }) seajs.use(['./hello', 'jquery'], function(hello, $) { $('#beautiful-sea').click(hello.sayHello); }); </script> /js/下 -main.js- define(function (require, exports, module) { // 通过 require 引入依赖 var $ = require('jquery'); var Spinning = require('.

人生第一次面试---百度前端面试

ε祈祈猫儿з 提交于 2019-12-18 20:48:40
  在这里记录一下自己人生中的第一次面试,因为之前春招有其他的安排,没有去实习的打算,错过了腾讯和阿里的面试,觉得也挺可惜的,能不能过是一回事,去锻炼自己又是一回事。   在自己被通知简历通过筛选以后,心里其实还是非常高兴的,然后被通知了面试,开始了一个星期的CSS和JS基础复习之路,学习了css3的新特性和许多HTML5的新技术。 第一面   第一面是一个美女,开始的时候直接叫我做个自我介绍,没错,第一个问题就把我问蒙了,经验不足的后果啊,也没准备过自我介绍说些什么,然后说了一些自己的基本情况,结果面试官问了句:“没有了?”,表示很惊讶,然后开始问问题了。。   question 1:img标签中的title和alt的区别?   answer:title是鼠标放上去的时候显示,alt呢是图片无法显示的时候显示在浏览器。   question 2:css的选择器有哪些?优先级?   answer:派生选择器,ID选择器,类选择器。选择越精准优先级越高。   question 3:position有哪些?   answer:绝对定位absolute,相对定义relative,静态static,固定fixed;   question 4:absolute和relative是相对于什么来定位?   answer:absolute是相对于body来定位,relative是相对于父级来定位。

JavaSript模块规范

牧云@^-^@ 提交于 2019-12-06 16:12:00
JavaSript模块化 在了解AMD,CMD规范前,还是需要先来简单地了解下什么是模块化,模块化开发? 模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问题进行系统性的分解以之处理。模块化是一种处理复杂系统分解为代码结构更合理,可维护性更高的可管理的模块的方式。可以想象一个巨大的系统代码,被整合优化分割成逻辑性很强的模块时,对于软件是一种何等意义的存在。对于软件行业来说:解耦软件系统的复杂性,使得不管多么大的系统,也可以将管理,开发,维护变得“有理可循”。 还有一些对于模块化一些专业的定义为:模块化是软件系统的属性,这个系统被分解为一组高内聚,低耦合的模块。那么在理想状态下我们只需要完成自己部分的核心业务逻辑代码,其他方面的依赖可以通过直接加载被人已经写好模块进行使用即可。 首先,既然是模块化设计,那么作为一个模块化系统所必须的能力: 1. 定义封装的模块。 2. 定义新模块对其他模块的依赖。 3. 可对其他模块的引入支持。 好了,思想有了,那么总要有点什么来建立一个模块化的规范制度吧,不然各式各样的模块加载方式只会将局搅得更为混乱。那么在JavaScript中出现了一些非传统模块开发方式的规范 CommonJS的模块规范,AMD(Asynchronous Module Definition),CMD(Common Module Definition)等

被迫使用了坑爹sea.js后如何改造jquery插件

倖福魔咒の 提交于 2019-12-06 08:16:14
// jquery-plugin-abc define( function ( require , exports , module ) { var $ = require ( ' $ ' ); // 插件的代码 $.fn . abc = function () {}; }); 包括bootstrap.js在内, 都需要这样的包裹 详情见 https://github.com/seajs/seajs/issues/971 来源: oschina 链接: https://my.oschina.net/u/579683/blog/525040

一步步学会使用SeaJS 2.0

二次信任 提交于 2019-12-05 23:20:17
一步步学会使用SeaJS 2.0 本文分为以下8步,熟悉之后就能够熟练使用SeaJS,从此之后你的生活会变得更加轻松愉悦! 1、SeaJS是什么? 2、下载并检阅SeaJS 3、建立工程和各种目录 4、引入SeaJS库 5、编写自己的代码 6、引入自己的代码 7、压缩合并 8、总结展望 -------------------------------------------------- 1、SeaJS是什么? 你一定听过前端模块化开发吧?神马,你没听过?我只能说你out了…… 你应该知道Java的import吧?神马,你又不知道?那你应该知道CSS中的import吧…… 在这里我不想展开说前端模块化的含义和价值,因为这里有一篇好文( https://github.com/seajs/seajs/issues/547 ),详细说明了前端模块化。 我知道你看到那么长的文章肯定会望而却步,也许你是希望能够快速开始敲代码(程序员的通病……)。没关系,如果实在读不下去,只要记住模块化要解决的问题即可:命名冲突、文件依赖关系。 这两个闹心的问题应该遇到过吧,如果没遇到过……我只能说你太牛X了 好了,前端模块化就扯到这里,写过前端的人应该基本都知道JavaScript自身是不支持模块化开发的,所以就有了SeaJS这款神器,为前端从业者提供了一个强大易用的模块化开发工具。 2、下载并检阅SeaJS

seaJs学习笔记之javascript的冲突问题

心不动则不痛 提交于 2019-12-05 23:20:03
seaJs是一个处理模块化的JS开源库,在学习seaJs之前还是要了解一下什么是JS模块化的一些概念,知道这个之后,会更好的了解seaJs的使用。  首先先看一下下面的这个问题。当你的 学习教程网 站开发越来越复杂的时候,会经常遇到JS冲突、浏览器性能下降,JS文件互相依赖吗?如果是在多人开发或者复杂开发的过程中,经常会遇到这些问题,那么这些问题我们可以通过JS模块化来解决。所以我们先来看一下冲突问题是如何产生的。  [html] view plaincopyprint? <!doctype html> <html dir="ltr" lang="zh-CN"> <head> <meta charset="utf-8"> <title>www.xuexijc.com</title> <!-- 引入A小伙伴儿写的公用JS --> <script type="text/javascript" src="common.js"></script> <pre name="code" class="html"><!-- 引入其他网站写好的插件 --> </pre><script type="text/javascript" src="d.js"></script><script type="text/javascript">//D小伙伴儿写一些代码操作</script></head><body