js模块化开发

初探前端模块化规范(AMD,CommonJS,UMD,CMD)

一曲冷凌霜 提交于 2019-12-07 08:38:37
以前,开发中我们通常使用整套框架(easyui,bootstrap),不得不说,easyui的自定义打包下载,让我很困惑,因为那个时候,需要手动跟踪组件依赖,也就是说,你需要自己手动下载相关文件,并注意在页面的引入顺序(好吧,有点耐心,细致点,总能解决的)。 现在,项目规模的增长,业务复杂度的增加,以及客户对交互与ui的要求不断提高。我们基本不再使用整套框架,都是选择开源的单一组件,各种组合,来实现相关业务。我们需要引入大量的插件文件,页面引入时,如何避免组件的彼此冲突,相互干扰,成为了很尖锐的问题。(曾经被select.js重写$坑过的朋友应该有感触)。 为了解决这个问题,两种竞争关系的模块规范AMD和CommonJS问世了,它们允许开发者遵照一种约定的沙箱化和模块化的方式来写代码,这样就能避免“污染生态系统”。 一 AMD( Asynchronous Module Definition ) 异步模块加载--主要适用在web客户端 以require.js为主力,在社区推进规范发展。 下面是只依赖jquery的模块foo的代码: // 文件名: foo.js define(['jquery'], function ($) { // 方法 function myFunc(){}; // 暴露公共方法 return myFunc; }); 还有稍微复杂点的例子

《基于模块化的前端开发框架的研究与实现》 论文阅读(十三)

寵の児 提交于 2019-12-06 05:56:32
一、基本信息 标题:基于Web前端的性能优化方案研究 时间:2017 来源:北京邮电大学 关键词:Web前端;模块化;JavaScript;Node.js;前端模板 二、研究内容 1.主要内容:   1.1研究背景与意义 当今互.联网飞速发展,网络用户的需求变化既快又大,大部分网站的更新周 期都是以日,小时甚至分钟为单位,在这种情况下,网站的前端就成了变化最频 繁的部分川。随着互联网公司对前端开发的逐渐重视,前端开发人数也越来越多, 但是技术人员的投入总是有限的,而前端开发领城并没有为开发者们提供一-种简 洁,有条理的方式来管理模块的方法,前端模块化问题经久不衰。 以JavaScript 模块化为例,其经历了无模块时代,即代码次序堆特的时代、 模块萌芽时代及当前的模块化组件化时代,ECMA2015 也将模块化纳入到规范 中,使模块化成为JavaScript规范,开发人员不断地在模块化领域进行摸索及探 求。模块化开发使得前端开发人员摆脱繁琐的文件依赖和命名冲突,增强代码复 用性,将代码划分模块管理,也方便开发人员的分工划分。每个人员对自己的模 块负责,考虑其复用性及可扩展性,从这个角度来看,模块化开发也提升了开发 人员的开发效率和代码质量。 本论文研究模块化技术,发现前端模块化在使用及应用场景等方面主要存在 以下问题,亟待进一步优化: (1)前端开发因其特殊性,在模块化方面-

基于vue模块化开发后台系统——构建项目

余生颓废 提交于 2019-12-06 04:11:11
文章目录如下: 项目效果预览地址 项目开源代码 基于vue模块化开发后台系统——准备工作 基于vue模块化开发后台系统——构建项目 基于vue模块化开发后台系统——权限控制 前言 在熟悉上一篇说到准备工具之后,现在开始构建属于自己的项目,这是一个VUE的项目,那么使用vue-cli来构建,输入以下命令 vue init webpack xxxx 在构建过程中,因为之前说的要规范代码,因此在eslint这个提问中,要回复 Y 。等一切都结束后,我们来看看目录结构 项目目录结构 当然这个目录添加了一些,已经做了备注 (加) ,没备注的就是一样的 ├── build // 构建相关 ├── config // 配置相关 ├── dist // 打包之后相关 ├── node_modules // npm相关包 ├── src // 代码 │ ├── api // 请求接口文件(加) │ ├── assets // 静态资源(图片,样式等) │ ├── components // 全局公用组件 │ ├── directives // 全局指令(加) │ ├── mock // 项目mock 模拟数据(加) │ ├── pages // 相关页面(加) │ ├── router // 路由 │ ├── store // store管理(加) │ ├── App.vue // 入口页面 │ └

使用SeaJS实现模块化JavaScript开发

限于喜欢 提交于 2019-12-05 02:26:50
前言 SeaJS 是一个遵循 CommonJS 规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制。与 jQuery 等JavaScript框架不同,SeaJS不会扩展封装语言特性,而只是实现JavaScript的模块化及按模块加载。SeaJS的主要目的是令JavaScript开发模块化并可以轻松愉悦进行加载,将前端工程师从繁重的JavaScript文件及对象依赖处理中解放出来,可以专注于代码本身的逻辑。SeaJS可以与jQuery这类框架完美集成。使用SeaJS可以提高JavaScript代码的可读性和清晰度,解决目前JavaScript编程中普遍存在的依赖关系混乱和代码纠缠等问题,方便代码的编写和维护。 SeaJS的作者是淘宝前端工程师 玉伯 。 SeaJS本身遵循KISS(Keep It Simple, Stupid)理念进行开发,其本身仅有个位数的API,因此学习起来毫无压力。在学习SeaJS的过程中,处处能感受到KISS原则的精髓——仅做一件事,做好一件事。 本文首先通过一个例子直观对比传统JavaScript编程和使用SeaJS的模块化JavaScript编程,然后详细讨论SeaJS的使用方法,最后给出一些与SeaJS相关的资料。 传统模式 vs SeaJS模块化 假设我们现在正在开发一个Web应用TinyApp

使用SeaJS实现模块化JavaScript开发

半世苍凉 提交于 2019-12-05 02:26:38
前言 SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制。与jQuery等JavaScript框架不同,SeaJS不会扩展封装语言特性,而只是实现JavaScript的模块化及按模块加载。SeaJS的主要目的是令JavaScript开发模块化并可以轻松愉悦进行加载,将前端工程师从繁重的JavaScript文件及对象依赖处理中解放出来,可以专注于代码本身的逻辑。SeaJS可以与jQuery这类框架完美集成。使用SeaJS可以提高JavaScript代码的可读性和清晰度,解决目前JavaScript编程中普遍存在的依赖关系混乱和代码纠缠等问题,方便代码的编写和维护。 SeaJS的作者是淘宝前端工程师玉伯。 SeaJS本身遵循KISS(Keep It Simple, Stupid)理念进行开发,其本身仅有个位数的API,因此学习起来毫无压力。在学习SeaJS的过程中,处处能感受到KISS原则的精髓——仅做一件事,做好一件事。 本文首先通过一个例子直观对比传统JavaScript编程和使用SeaJS的模块化JavaScript编程,然后详细讨论SeaJS的使用方法,最后给出一些与SeaJS相关的资料。 传统模式 vs SeaJS模块化 假设我们现在正在开发一个Web应用TinyApp

什么是模块化?模块化开发的好处

匿名 (未验证) 提交于 2019-12-02 23:49:02
模块化开发简述 什么是模块化:指文件的组织、管理、使用的方式。即把一个大的文件拆分成几个小的文件,他们之间相互引用、依赖。 都说模块化开发为前端发展带来了巨大的进步,然而不熟悉的人看着也是两眼一懵,那其实这到底是什么?好处在哪?我来说说自己的见解吧。 1. 模块化和传统开发的区别 实话讲,其实在我看来,两者的开发是一样的,除了方式不一样,达到的效果并没两样。 看着扯淡,但实际可以想一下,现流行的模块化开发主要有两种方式: 依赖加载。这种方式是最广泛的,像requirejs,sea.js等,除了 编写规范 不一样,实际都是通过相关require api把模块chunk文件拿回来,当加载完成之后再运行逻辑代码。 依赖打包。经典代表就是webpack,其实就是写代码的时候分开模块,但打包的时候按依赖关系找到各个模块,最后打包到同一个文件上,并给每个chunk标识id,运行逻辑代码时将模块引用指向该id,从而实现模块化。 而传统的开发方式是在页面上通过脚本标签引入,等所有脚本资源加载完成后再运行逻辑代码。这样一对比,是不是发现效果其实是一样的,我把不同脚本分开写,也是可以做到类似模块化的效果? 那么重点来了,模块化的优势在哪? 别急着回答,先思考一下,然后带着你的想法继续看下去。 先回想一下,传统开发的痛点在哪。 首先,如上所述,传统的开发方式需要等待所有脚本资源加载完成

前端模块化

匿名 (未验证) 提交于 2019-12-02 23:47:01
1.模块化: Js模块化提供了三种规范    1,commonjs 规范 代表就是nodejs 适合后台开发 因为是同步的 服务器的运行比较快等待时间不长,commonjs不适合用于前端,前端的客户端是浏览器,浏览器追求异步加载,浏览器不能等待太长时间。    2,前端模块的规范是Amd规范 代表就是requirejs,他是异步的,很多前端框架都是用的amd规范,比如jquery angular等    3,第三个模块化规范是而es6 2.模块化的操作   1.Commonjs的操作     所有的模块化都是两个方向,暴露模块接口和引入模块。     Module.exports={} 暴露的是一个叫exports的对象     Require() 引入一个模块     这是后台的规范,在nodejs环境可以直接运行,但是在客户端不能直接运行,需要对文件打包解析。Webpack gulp。 拓展   Var a;   Var a 就是声明一个变量a,就是浏览器往window上添加一个属性a。 前端模块 自定义前端模块 案例分析   定义一个shangjun模块,没有任何依赖,定义一个feixiang模块,这个模块依赖shangjun模块,定义一个主文件index.js 依赖feixiang模块。            Html文件     注意事项   依赖关系千万不能出错  

babel tsc webpack

别等时光非礼了梦想. 提交于 2019-12-02 15:15:19
如果写超过es5版本的js,或者ts等。是需要babel来进行编译的。 但是babel值编译,如果遇到模块化他就无能为力了 需要webpack对其进行模块化打包功能。 通常babel编译+webpack处理模块打包压缩等,挺好的。是完美的方案 但是webpack它不老实。它想牛逼,于是他就内置了不用任何配的情况下,就支持对es6的编译环节。您只管使用webpack命令,他就支持编译+模块处理打包了。但是稍微高端的就不行,比如我要编译ts等,就需要引入ts-loader了。 但是人家ts也不是吃白饭的啊,人家自己的语言 自己肯定要提供编译的cli呀。于是tsCli之tsc命令人家自己也能编译ts为浏览器或者node可运行的代码。 那也就是说 后端node开发人可以直接用tsCli或者babelCli来处理ts代码 前端因为浏览器目前2019年均不直接支持模块化,所以需要进行搭配来使用 如果您的代码是es6,且没有用模块,那么用chrome直接运行即可,无需任何处理,我自己测试了,chrome支持良好。 如果你不放心,或者还要支持其他浏览器,那么你可以用babel编译一下子,是的不推荐你用webpack,因为你没有用模块化功能,所以浪费了,webpack肯定要比babel重 若果您的代码有es6以及其模块化,那么推荐您直接上webpack,因为它既能处理es6普通语法,也能处理模块化

webpack+vue+vueRouter模块化构建完整项目实例超详细步骤(附截图、代码、入门篇)

半腔热情 提交于 2019-11-30 07:05:26
>开始 (确认已经安装node环境和npm包管理工具) 1、新建项目文件名为vuedemo 2、 npm init -y 初始化项目 >安装项目依赖 3、 npm install --save vue 默认安装最新版vue 4、 npm install --save-dev webpack webpack-dev-server 安装webpack,webpack-dev-server(是一个小型的Node.js Express服务器) *拓展:npm install 在安装 npm 包时,有两种命令参数可以把它们的信息写入 package.json 文件,一个是npm install --save另一个是 npm install --save-dev,他们表面上的区别是--save 会把依赖包名称添加到 package.json 文件 dependencies 键下,--save-dev 则添加到 package.json 文件 devDependencies 键下, --save-dev 是你开发时候依赖的东西,--save 是你发布之后还依赖的东西。* 5、 npm install --save-dev babel-core babel-loader babel-preset-es2015 安装babel,babel的作用是将es6的语法编译成浏览器认识的语法es5 6、

Node基础-CommonJS模块化规范

二次信任 提交于 2019-11-29 08:19:50
1.在本地项目中基于NPM/YARN安装第三方模块 第一步:在本地项目中创建一个“package.json”的文件 作用:把当前项目所有依赖的第三方模块信息(包含:模块名称以及版本号等信息)都记录下来;可以在这里配置一些可执行的命令脚本等; 基于YARN会默认生成一个“配置清单”,只是信息没有手动创建的全面 npm init -y 或者 yarn init -y 创建配置清单的时候,项目目录中不应该出现中文和特殊符号,这样有可能识别不了 第二步:安装 开发依赖:只有在项目开发阶段依赖的第三方模块 生产依赖:项目部署实施的时候,也需要依赖的第三方模块 [npm] npm install xxx --save 保存到配置清单的生产依赖中 --save-dev 保存到开发依赖中 [yarn] yarn add xxx 默认就是保存到生产依赖中 --dev / -D 保存到开发依赖中 第三步:部署的时候“跑环境” 不要自己一个个的安装,只需要执行 npm install 或者 yarn install 即可,npm会自己先检测目录中是否有package.json文件,如果有的话,会按照文件中的配置清单依次安装 =>开发一个项目,我们生成一个配置清单“package.json”,当我们安装第三方模块使用的时候,把安装的模块信息记录到配置清单中,这样以后不管是团队协作开发还是项目部署上线