模块化

前端模块化

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

前端模块化

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

前端模块化开发

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

关于模块化开发的那些事儿

痴心易碎 提交于 2020-01-04 00:49:29
一、什么是模块化开发   一个 模块就是一个实现特定功能的文件,有了模块我们就可以更方便的使用别人的代码,要用什么模块就加载什么模块   好处:     1、避免变量污染,命名冲突     2、提高代码的复用性     3、提高维护性     4、依赖关系的管理 二、commonJS   commonJS由nodeJS发扬光大,这标志着js模块化正式登场   1、定义模块     根据commonJS规范,一个单独的文件是一个模块,每一个模块都是一个单独的作用域,也就是说,在该模块内部定义的变量,无法被其他模块读取,除非为global对象的属性。      2、模块输出     模块只有一个出口,module.exports对象。 我们需要把模块希望输出的内容放入该对象。   3、加载模块   加载模块用require方法,该方法读取一个文件并且执行,返回文件内部的module.exports对象 var name = 'Byron'; function printName(){ console.log(name); } function printFullName(firstName){ console.log(firstName + name); } module.exports = { printName: printName, printFullName:

JavaScript的模块化之AMD&CMD规范

拥有回忆 提交于 2020-01-04 00:47:36
前端开发常常会遇到的问题:   1.恼人的命名冲突;   2.繁琐的文件依赖; 模块化开发的优势:   1.解决命名冲突和依赖管理;   2.模块的版本管理;   3.提高代码的可维护性;   4.前端性能优化; JavaScript本身不具备模块化的功能,开发人员为了更好的开发,需要人为的制定一套规范标准,约定一套固定的写法来实现JavaScript模块化功能。 一个模块化系统所必须的能力:  定义封装的模块  定义新模块对其他模块的依赖  可对其他模块的引入支持 AMD&CMD AMD AMD(Asynchronous Module Definition)异步模块定义: 是 RequireJS 在推广过程中对模块定义的规范化产出。 requireJS主要解决两个问题 多个js文件可能有依赖关系,被依赖的文件需要早于依赖它的文件加载到浏览器 js加载的时候浏览器会停止页面渲染,加载文件越多,页面失去响应时间越长 requireJS定义了一个函数 define,它是全局变量,用来定义模块 define(id?, dependencies?, factory); id:可选参数,用来定义模块的标识,如果没有提供该参数,脚本文件名(去掉拓展名) dependencies:是一个当前模块依赖的模块名称数组 factory:工厂方法,模块初始化要执行的函数或对象。如果为函数

前端模块化,AMD和CMD的区别

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

组件化开发和模块化开发概念辨析

眉间皱痕 提交于 2020-01-03 15:10:23
网上有许多讲组件化开发、模块化开发的文章,但大家一般都是将这两个概念混为一谈的,并没有加以区分。而且实际上许多人对于组件、模块的区别也不甚明了,甚至于许多博客文章专门解说这几个概念都有些谬误。 想分清这两个概念我觉得结合一下软件的渐进式开发场景更容易理解。但是下面的篇幅会比较长,所以我先说结论,不耐烦的同学可以先看: 概念区别 对比 说明 l 组件: 最初的目的是代码重用,功能相对单一或者独立。在整个系统的代码层次上位于最底层,被其他代码所依赖,所以说组件化是纵向分层。 l 模块 :最初的目的是将同一类型的代码整合在一起,所以模块的功能相对复杂,但都同属于一个业务。不同模块之间也会存在依赖关系,但大部分都是业务性的互相跳转,从地位上来说它们都是平级的。 因为从代码组织层面上来区分,组件化开发是纵向分层,模块化开发是横向分块,所以模块化并没有要求一定组件化。也就是说你可以只做模块化开发,而不做组件化开发。那这样的结果是什么样的呢?就是说你的代码完全不考虑代码重用,只是把相同业务的代码做内聚整合,不同模块之间还是存在大量的重复代码。这样的成果也算是做到了模块化,只不过我们一般不会这样而已。 和组件模块近似的一对概念是库和框架。库的概念偏近于代码的堆集,是分层的概念,所以对应组件化。框架是结构化的代码,所以应用于模块化。框架是骨,模块化是肉。 讲到这给大家介绍一个快速开发平台

ASP.NET Core模块化前后端分离快速开发框架介绍之4、模块化实现思路

北城余情 提交于 2020-01-02 02:36:02
源码 GitHub: https://github.com/iamoldli/NetModular 演示地址 地址: https://nm.iamoldli.com 账户:admin 密码:admin 前端框架演示地址(临时) 地址: http://nm.demo.iamoldli.com/index.html 账户:admin 密码:admin 目录 1、开篇 2、快速创建一个业务模块 3、数据访问模块介绍 4、模块化实现思路 获取官方源码 为了方便查看源码,我们先获取下官方的源码 下载 AspNetCore 源码 git clone --recursive https://github.com/aspnet/AspNetCore 下载 Extensions 源码 git clone https://github.com/aspnet/Extensions.git ASP.NET Core控制器的加载机制 参考文档: ASP.NET Core 中的应用程序部件 在 ASP.NET Core 中通过应用程序部件 ApplicationPart 来发现控制器、视图组件或标记帮助程序等 MVC 功能,应用程序部件是由 ApplicationPartManager 类来管理。当调用 AddMvc 或者 AddMvcCore 方法添加MVC相关功能时, ASP.NET Core 内部会创建

LAMP(七)之编译安装php(模块化和fpm两种方式)

人走茶凉 提交于 2019-12-30 16:58:44
安装前说明:   安装环境: CentOS6   安装应用程序:httpd2.4 + mariadb + php   安装次序: 先编译安装 httpd2.4和mariadb,最后安装php   编译安装 httpd2.4: https://www.cnblogs.com/ckh2014/p/10777961.html   编译安装 mariadb: https://www.cnblogs.com/ckh2014/p/10798141.html   PHP的下载地址: https://www.php.net/releases/ 一、以模块方式安装php 1. 解决依赖关系 # yum -y groupinstall "Desktop Platform Development"# yum -y install bzip2-devel libmcrypt-devel libxml2-devel 2.编译安装php-VERSION ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg

require.js【模块化编程】- 模块加载简例

隐身守侯 提交于 2019-12-30 01:59:43
今天去学习了一下javascript的模块化编程,写了个简单的例子。 ———————————————— 这是我的第一篇技术性的小博文,希望和大家相互交流 ———————————————— 这个列子我打算分两个部分罗列: 1.文件地图 2.源代码 demo.html: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>模块加载简例</title> 6 <script data-main="main" type="text/javascript" src="require.js"></script> 7 8 </head> 9 <body> 10 空页面 11 </body> 12 </html> a.js var Radd = function(numA,numB){ return numA + numB; } b.js