require

require.js源码分析

倖福魔咒の 提交于 2020-02-13 16:50:26
写的寥寥草草,博客园的布局怎么弄还没有研究,再保存一份草稿,日后在完善,深度研究 require.js 加载顺序 1:加载html主页,require.js文件 2:脚本执行到html中的script开始使用require.js进行模块化加载。先将文件路径加载保存在map中。在调用require()时并没有进行相应文件的加载 3:require配置,在初始化config中到底做了些什么事情呢(真正对用的初始化函数是function(deps, callback, errback, optional)这里包括了需要定义的config基本属性,回掉函数,错误处理函数,optional) 3.1确定context使用require.js中默认的定义 3.2config基本属性不是数组与字符串(在这里的数组判断挺有意思,没有使用typeof而是使用了Object.prototype.toString.call native方法):{ 保存的config 基本属性 如果第二个参数数组,则callback默认也是config基本属性的一项 } 3.3config基本属性中是否包含context项 3.4验证是否已经拥有该context,同样使用了Objet.prototype.hasOwnProperty.call native方法。contextName毕竟只是一个临时变量

模块化工具require 学习笔记

拟墨画扇 提交于 2020-02-13 12:13:17
一:早就听说过模块化工具require.js的大名,之前也是由于自己的网页上引用了诸多的js,而且一堆的js引用放在那里,一个依赖另一个,导致我不敢随意改动各个js的位置,而且有时页面内容一多起来,js加载也使得本来的html内容出现响应延迟。因此,在网上查过后,便得知解决方法是使用AMD异步模块-require.js。 二:了解过require.js后,我们一般都知道它具有如下优点: 1,防止js加载阻塞页面渲染,实现js文件的异步加载,避免网页失去响应; 2,使用程序调用的方式加载js,防止出现如下丑陋不堪的一串引用,同时管理模块之间的依赖性,便于编写与维护; <script type="text/javascript" src="a.js"></script> <script type="text/javascript" src="b.js"></script> <script type="text/javascript" src="c.js"></script> <script type="text/javascript" src="d.js"></script> <script type="text/javascript" src="e.js"></script> <script type="text/javascript" src="f.js"></script>

手把手教你使用koa2

为君一笑 提交于 2020-02-13 08:05:40
简介 koa是由express的原班人马打造的web框架。但是相对于express,koa的性能要更高,因为koa通过使用aysnc函数,帮你丢弃回调函数,并有力的增强了错误处理。而且koa没有绑定任何中间件,二十提供了一套优雅的方法,帮助你快死而愉快地编写服务端应用程序。 与express的区别 koa与express对比图 框架 推荐版本 是否自带中间件 js语法 特性 express 4.x 是 es5 回调嵌套 koa2 2.x 否 es7 async/await+Promise 安装 koa依赖的node>v7.6.0 npm i koa -D 要在 node < 7.6 版本的 Koa 中使用 async 方法, 我们推荐使用 babel's require hook . 创建hello world应用程序,在文件中创建server.js,文件内的代码如下 const Koa = require('koa'); const app = new Koa(); app.use(async ctx => { ctx.body = 'Hello World'; }); app.listen(3000); 在终端中启动 node server.js 服务启动之后,在浏览器中输入localhost:3000,就会看到页面显示的是hello world的字样 路由

Koa快速入门教程(一)

放肆的年华 提交于 2020-02-13 05:21:37
Koa 是由 Express 原班人马打造的,致力于成为一个更小、更富有表现力、更健壮的 Web 框架,采用了 async 和 await 的方式执行异步操作。 Koa有v1.0与v2.0两个版本,随着node对 async 和 await 的支持,Koa2的正式发布,本文Koa均指Koa2 如果你还不熟悉 async 函数可查阅阮大的 ECMAScript 6 入门 这是一篇从零开始的简易教程,话不多说,先来快速开始:hello world! 一、快速开始 1.1 开发环境 Koa 依赖 node v7.6.0 或 ES2015及更高版本和 async 方法支持,你可以使用自己喜欢的版本管理器快速安装支持的 node 版本 $ node -v v8.9.1 如果你的版本号小于v7.6.0,请自行升级。如使用 nvm 在确认好环境后,我们就可以新建一个项目,在里面自由操练了 $ mkdir KoaTutorial && cd KoaTutorial $ npm i koa --save 1.2 必修的 hello world 应用: const Koa = require('koa'); const app = new Koa(); app.use(async ctx => { ctx.body = 'Hello World'; }); app.listen(3000);

node.js初步

自作多情 提交于 2020-02-12 22:04:14
Node.js介绍 Node.js 诞生于2009年,Node.js采用C++语言编写而成,是 一个Javascript的运行环境。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境 ,让JavaScript的运行脱离浏览器端,可以使用JavaScript语言 书写服务器端代码。 安装Node.js ​ Node.js官网 下载稳定版本,node偶数版本为稳定版本,奇数版本为非稳定版本。 mac 直接安装 或者 brew来安装 安装完Node.js会自动安装NPM(Node Package Manager):包管理工具; 通过指令 node -v 来查看是否安装完成和查看node版本号;npm -v 来查看npm版本。 使用Node.js实现第一个服务器 初步感受Node.js //引入http模块 let http = require("http"); //创建一个服务器 let serve = http.createServer((req,res)=>{ console.log("hello"); res.end("hello world"); }) //设置端口号 serve.listen(3000); Google Chrome 默认非安全端口列表,尽量避免以下端口。 1, // tcpmux 7, // echo 9, //

Stylus-import

二次信任 提交于 2020-02-12 13:22:43
Stylus Import Disclaimer: In all places the @import is used with Stylus sheets, the @require could be used When using @import without the .css extension, it’s assumed to be a Stylus sheet (e.g., @import "mixins/border-radius" ). @import works by iterating an array of directories, and checking if this file lives in any of them (similar to node’s require.paths ). This array defaults to a single path, which is derived from the filename option’s dirname . So, if your filename is /tmp/testing/stylus/main.styl , then import will look in /tmp/testing/stylus/ . @import also supports index styles. This

【webpack】-- 样式加载

╄→尐↘猪︶ㄣ 提交于 2020-02-12 02:08:31
每次学新东西总感觉自己是不是变笨了,看了几个博客,试着试着就跑不下去,无奈只有去看官方文档。 webpack是基于node的。先安装最新的 node 。 1.初始化 安装node后,新建一个目录,比如html5。cmd中切到当前文件夹。 npm init -y 这个命令会创建一个默认的package.json。它包含了项目的一些配置参数,通过它可以进行初始安装。详细参数: https://docs.npmjs.com/files/package.json 。 不要y参数的话,会在命令框中设置各项参数,但觉得没啥必要。 2.安装webpack npm install webpack --save-dev 将webpack安装到当前目录。虽然npm install webpack -g 可以讲webpack安装到全局,但是容易出现一些模块找不到的错误,所以最好还是安装到当前目录下。 3.目录结构 webpack是一款模块加载各种资源并打包的工具。所以先建一个如下的目录结构: app包含的开发中的js文件,一个组件,一个入口。build中就是用来存放打包之后的文件的。webpack.config.js 顾名思义用来配置webpack的。package.json就不用说了。 component.js export default function () { var element =

JS模块化开发

谁说胖子不能爱 提交于 2020-02-12 01:21:28
在JavaScript发展初期就是为了实现简单的页面交互逻辑,寥寥数语即可;如今CPU、浏览器性能得到了极大的提升,很多页面逻辑迁移到了客户端(表单验证等),随着web2.0时代的到来,Ajax技术得到广泛应用,jQuery等前端库层出不穷,前端代码日益膨胀 这时候JavaScript作为嵌入式的脚本语言的定位动摇了,JavaScript却没有为组织代码提供任何明显帮助,甚至没有类的概念,更不用说模块(module)了,JavaScript极其简单的代码组织规范不足以驾驭如此庞大规模的代码 模块 既然JavaScript不能handle如此大规模的代码,我们可以借鉴一下其它语言是怎么处理大规模程序设计的,在Java中有一个重要带概念——package,逻辑上相关的代码组织到同一个包内,包内是一个相对独立的王国,不用担心命名冲突什么的,那么外部如果使用呢?直接import对应的package即可 import java.util.ArrayList; 遗憾的是JavaScript在设计时定位原因,没有提供类似的功能,开发者需要模拟出类似的功能,来隔离、组织复杂的JavaScript代码,我们称为模块化。 一个模块就是实现特定功能的文件,有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块。模块开发需要遵循一定的规范,各行其是就都乱套了 规范形成的过程是痛苦的

初学require.js

拈花ヽ惹草 提交于 2020-02-11 12:40:14
  引入require.js,可以解决的问题: (1)实现js文件的异步加载,避免网页失去响应; (2)管理模板之间的依赖性,便于代码的编写和维护。   它的模块管理遵循AMD规范(Asynchronous Module Definition - 异步加载模块规范);所谓AMD规范,就是为了解决模块化编程带来的代码加载先后顺序问题,以及常规为解决该阻塞问题方式带来的各种附加问题。    核心 是通过define方法将无序混乱代码分割为有序的模块,通过require方法实现代码的模块加载。 一、require.js的加载    把从官网下载的文件放在js目录下,按如下方式引用: <script src="js/require.js"></script>    加载这个文件,也可能造成网页失去响应。解决办法有两个,一个是把它放在网页底部加载,另一个是写成下面这样: <script src="js/require.js" defer async="true" ></script>    加载require.js以后,下一步就要加载我们自己的代码了。假定我们自己的代码文件是main.js,也放在js目录下面。那么,只需要写成下面这样就行了: <script src="js/require.js" data-main="js/main"></script>    data

requireJS 从概念到实战

久未见 提交于 2020-02-11 07:00:52
原文转至:http://www.cnblogs.com/yingzi1028/p/6693852.html 小颖目前所在的公司在用require.js,小颖一直说要写个小demo,今天抽空把自己写的小demo分享出来,希望对初学者有一些帮助,嘻嘻 学习资料: CSDN上的一篇文章: 使用RequireJS优化Web应用前端 阮一峰老师的网络日志: Javascript模块化编程(三):require.js的用法 卷柏的花期的随笔: requireJS 从概念到实战 demo目录: 小颖就不在自己博客里卖弄了,像:为什么要用require.js?、require.js的加载、主模块的写法等小颖就不在我的博客里面写了,详细的大家请移步到:阮一峰老师的网络日志: Javascript模块化编程(三):require.js的用法 中去看看。小颖就主要给大家分享下小颖理解的 require.js模块的加载和AMD模块的写法 在看小颖写的demo之前大家先看下阮一峰老师的网络日志: Javascript模块化编程(三):require.js的用法 中模块的加载和AMD模块的写法的详解: 模块的加载: 上一节最后的示例中,主模块的依赖模块是['jquery', 'underscore', 'backbone']。默认情况下,require.js假定这三个模块与main.js在同一个目录