制作网站的主要工作,不再是自己编写各种功能,而是如何将各种不同的模块组合在一起。 ? 浏览器本身并不提供模块管理的机制,为了调用各个模块,有时不得不在网页中,加入一大堆script标签。...而且,实际应用中,往往还需要在服务器端,将所有模块合并后,再统一加载,这多出了很多工作量。 ? 今天,我介绍另外四种前端模块管理器:Bower,Browserify,Component和Duo。...$ bower uninstall jquery 注意,默认情况下,会连所依赖的模块一起卸载。比如,如果卸载jquery-ui,会连jquery一起卸载,除非还有别的模块依赖jquery。... Browserify编译的时候,会将脚本所依赖的模块一起编译进去。这意味着,它可以将多个模块合并成一个文件。.../background-image.jpg'); } 编译时,Duo自动将normalize.css和layout.css,与当前样式表合并成同一个文件。
制作网站的主要工作,不再是自己编写各种功能,而是如何将各种不同的模块组合在一起。 浏览器本身并不提供模块管理的机制,为了调用各个模块,有时不得不在网页中,加入一大堆script标签。...而且,实际应用中,往往还需要在服务器端,将所有模块合并后,再统一加载,这多出了很多工作量。 今天,我介绍另外四种前端模块管理器:Bower,Browserify,Component和Duo。...$ bower uninstall jquery 注意,默认情况下,会连所依赖的模块一起卸载。比如,如果卸载jquery-ui,会连jquery一起卸载,除非还有别的模块依赖jquery。... Browserify编译的时候,会将脚本所依赖的模块一起编译进去。这意味着,它可以将多个模块合并成一个文件。.../background-image.jpg'); } 编译时,Duo自动将normalize.css和layout.css,与当前样式表合并成同一个文件。
报错一:Uncaught ReferenceError: $ is not defined Uncaught ReferenceError: $ is not defined Uncaught ReferenceError...图片.png 报错二:jsp页面相对路径和绝对路径的问题: 正常路径:html里面的../../,改成jsp页面就找不到路径了,这个时候成了这个鬼样子 ?...尝试删除 jquery-ui.min.js"> 解决办法...像这样使用它,解决了我的问题!...图片.png 解决方案:解决方案:将jquery.min.js放在bootstrap.min.js文件之前引用,bootstrap.min.css文件在整两个文件前后引用都无妨(测试多次)。
ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are already in use 8080端口被占用 将配置文件里面被占用的端口名改掉...#报错六:Uncaught ReferenceError: $ is not defined Uncaught ReferenceError: $ is not defined Uncaught ReferenceError...: jQuery is not defined 错误原因:文件加载的顺序不对,jQuery文件的顺序要在前面 方法:把jQuery文件写在所有script文件前面 #报错七:jsp页面相对路径和绝对路径的问题...尝试删除 jquery-ui.min.js"> 解决办法...像这样使用它,解决了我的问题!
报错六:Uncaught ReferenceError: $ is not defined Uncaught ReferenceError: $ is not defined Uncaught ReferenceError...报错七:jsp页面相对路径和绝对路径的问题: 正常路径:html里面的../.....尝试删除 jquery-ui.min.js"> 解决办法...像这样使用它,解决了我的问题!...Uncaught Error: Bootstrap requires jQuery at bootstrap.min.js:7 解决方案:解决方案:将jquery.min.js放在bootstrap.min.js
function fn() { console.log('这是一个函数'); console.log(fn); 语法解析错误:未预期的结束,这个例子中缺少结尾的大括号 },在编写代码时尽可能的维持正确的锁紧,将代码排列整齐之后更容易找到错误...语法解析错误:未预期的符号 },代码结尾多了一个 } 符号导致环境运行错误,这个错误的排查方法与上面相同,尽可能将代码排整齐并维持首尾符号的一致。...: a is not defined 引用错误:由于变量 a 未定义,所以在使用这个变量时会出现未定义的提示,只要先定义好这个变量即可。...下面的例子就是因为 jQuery 没有正确导入而导致的。...,这类型的错误通常是以下几种: 试图获取 undefined、null 的属性 尝试调用非函式变量或表达式(例如: 'text'()) ❝排查重点:在获取变量前先确认其当前的数据类型及结构 ❞ Uncaught
将一个复杂的程序依据一定的规则(规范)封装成几个块(文件), 并进行组合在一起 块的内部数据与实现是私有的, 只是向外部暴露一些接口(方法)与外部其它模块通信 2.模块化的进化过程 全局function...方法将页面的背景颜色改成红色,所以必须先引入jQuery库,就把这个库当作参数传入。...: require(['module1', 'module2'], function(m1, m2){ 使用m1/m2 }) (2)未使用AMD规范与使用require.js 通过比较两者的实现方法...(3) ES6-Babel-Browserify使用教程 简单来说就一句话:使用Babel将ES6编译为ES5代码,使用Browserify编译打包js。...和browserify npm install babel-cli browserify -g npm install babel-preset-es2015 --save-dev preset 预设(
JavaScript打包方案从最初简单的文件合并,到AMD 的模块具名化并合并,再到browserify将CommonJS 模块转换成为浏览器端可运行的代码,打包器做的事情越来越复杂,角色也越来越重要,...它同时也提供了对模块进行打包与构建的工具r.js,通过将开发时单独的匿名模块具名化并进行合并,实现线上页面资源加载的性能优化。RequireJS 与r.js 等一起提供的一个模块化构建方案。...更多参看官网:https://requirejs.org/Browserifyhttps://browserify.org/Browserify允许CommonJS格式模块在前端使用,主要用于在浏览器中使用...loader 和 plugins 处理,然后打包在一起。...Webpack和SystemJS用法 https://www.jdon.com/idea/js/javascript-module-loaders.htmlbrowserify 中文文档与使用教程 https
仅有10%的受访者尝试过Less,19%的受访者尝试过Stylus,80%的受访者从未听闻Rework。...库和框架 尽管存在相关性问题,但是超过99%的开发者都曾使用过jQuery,有31%的受访者认为使用jQuery对大多数项目来说都很重要。...使用模块绑定的开发者自2016年以来增长了20%,达到68%。其中Webpack是最受欢迎的模块绑定工具,占到了31%,其次是Browserify(11%)、RequireJS(8%)。...编译器:将ES6代码编译为ES5 62%的开发人员正在使用Babel这样的编译器,来将ES6代码编译为对旧浏览器更为友好的ES5代码。31%的受访者听说过这样的编译器,但是并未使用过。...有以下几点值得注意: 如果你需要使用更多的工具,那么Node.js和npm值得选择 Gulp和Webpack值得尝试 学习ES6,即便你一直工作在向后兼容的ES5项目中。
什么是模块/模块化 将一个复杂的程序按照一定的规范,封装成几个块(文件),并进行组合在一起。 这些模块,最好都做到可复用性,比如可以在多个文件中使用处理时间的模块。..._private; // undefined 那我们怎么使用呢?类似于JQuery把它暴露到window上。 引入依赖模式 如JQuery的最外层,其实就是一个立即执行函数。...JQuery把$ 和 jQ 添加给了window。...言归正传,我们进入到commonJS_Browserify项目中运行 局部安装命令和全局安装命令。安装成功后,我们看一下package.json的内容。...记得数组中的参数,与回调函数中的参数对应上。当然可以名字不对应上,但是为了更好的维护性,还是建议同名。
关注专栏,一起学习吧~ script 标签 script标签出现的原因是为了解决早期js引入html页面的同时,不会导致页面在其他浏览器中渲染出问题。...通过的方式可以将一段script脚本插入到html中,或者引入到html中。...必须是引入外部文件的script上才能使用,也就是必须与src属性同时使用。...> console.log(jQuery); // Uncaught ReferenceError: jQuery is not defined...开启cors校验之后,跨域的script资源在运行出错的时候,window.onerror可以捕获到完整的错误信息。 crossorigin=use-credentials可以跨域带上cookie。
1.传统的方法啰嗦,定义和执行分开写; 2.传统的方法直接污染全局命名空间(浏览器里的 global 对象,如 window) 函数范围与块范围界定 使用var关键字声明的局部变量的作用域为封闭函数。...foo; // ReferenceError: foo is not defined 现在的论点是,不使用IIFE,我们可以使用块范围变量来获得相同的结果。...变量重命名 有时,你可能碰到一种情况,你正在使用的两个不同的库暴露的全局变量名是相同的。例如,考虑一下你正在使用jQuery同时另一个库也指定了一个为$的全局变量。...为了解决命名冲突问题,可以将一段代码封装在一个IIEF中,将一个全局变量(比如,jQuery)作为参数传入IIFE。...捕获全局对象 JavaScript代码在不同环境执行时,你所使用的全局对象是不同的。当代码在浏览器运行时,全局对象是windows。但是在Node.js中,全局对象是global。
值为“未定义”,运行typeof时,返回的“undefined”。...===" 第一个将原始值和其包装对象视为相等 第二个则是视为不等 undefined, null, 布尔值, 数字, 字符串 数组和函数 var str = "dashu"; str.toUpperCase...优化,优先使用id选择器,jquery如果要使用dom元素,就建议存储一个变量保存使用,使用dom操作的过程非常耗性能。...jquery一个对象可以同时绑定多个事件,底层实现原理:addEventListener与attachEvent兼容处理做事件注册。...Jquery.extend 用来扩展 jQuery 对象本身 jquery.fn.extend 用来扩展 jQuery 实例的 如何将数组转换为json字符串,然后换回来?
前言 立即执行函数常用于第三方库,它可以用来隔离变量作用域,很多第三方库都会存在大量的变量和函数,在ES5环境下为了避免变量污染,开发者想到的解决办法就是使用立即执行函数。...变量重命名 在平常开发中可能遇到两个不同的库,他们暴露的全局变量名却是相同的,例如:正在使用Jquery,另一个库也指定了一个名为$的全局变量。...为了解决命名冲突问题,可以将一段代码封装在一个IIFE中,将一个全局变量(比如Jquery)作为参数传入IIFE,在函数内部,就可以以一个任意的参数名(比如 $)来访问该参数值,我们举个例子来说明下,如下所示...捕获全局对象 JavaScript代码在不同环境执行时,所使用的全局对象是不同的,当代码在浏览器环境运行时,全局对象是window,但是在node环境下,全局对象则是global。...function关键字声明一个函数,但未给函数命名,通过这种方式声明的函数就是匿名函数,例如function(){}。
而本文将重点关注其中的错误部分,主要介绍一下常见的错误类型以及如何对它们进行捕获并上报。...e.g: 下图是当使用了未定义的变量"foo",导致产生js运行时错误时的上报数据: ? 2、资源加载错误 这里的静态资源包括js、css以及image等。...4、异步请求错误(fetch与xhr) 异步错误的捕获分为两个部分:一个是传统的XMLHttpRequest,另一个是使用fetch api。...像axios和jQuery等库就是在xhr上的封装,而有些情况也可能会使用原生的fetch,因此对这两种情况都要进行捕获。 e.g: 下图是xhr请求接口返回400时捕获后的上报数据: ?...各个类型错误的捕获方式 1、window.onerror与 window.addEventListener('error')捕获js运行时错误 使用window.onerror和 window.addEventListener
Browserify是目前最常用的CommonJS格式转换的工具,我们可以通过安装browserify来对其进行转换.但是我们仍然需要注意,由于 CommonJS 的规范是阻塞式加载,并且模块文件存放在服务器端...npm i browserify -g 然后使用如下命令 browserify main.js -o js/bundle/main.js 然后在 HTML 中引入使用即可。...有一说一,在浏览器中使用 CommonJS 的规范去加载模块,真的不是很方便。如果一定要使用,我们可以使用browserify编译打包,也可以使用require1k,直接在浏览器上运行即可。.../sea-modules/", alias: { "jquery": "jquery/jquery/1.10.1/jquery.js" } }) // 加载入口模块 seajs.use...is not defined 上面代码中,执行a.mjs以后会报错,foo变量未定义.
方法使用与以下相同的格式: methodName() methodName(requiredParameter*, optionalParameter, ...): Type of return value...参数 类型 描述 field 字符串| jQuery的 字段名称或字段元素如果未定义字段,则该方法将返回所有字段的所有错误消息 validator 串 验证器的名称如果未定义验证器,则该方法返回所有验证器的错误消息...参数 类型 描述 field 字符串| jQuery的 字段名称或字段元素如果未定义字段,则该方法返回表单选项。 validator 串 验证器的名称如果未定义验证器,则该方法返回所有字段选项。...参数 类型 描述 field 字符串| jQuery的 字段名称或字段元素 resetValue 布尔 如果true,该方法将字段值重置为空或删除检查/选择的属性(用于收音机和复选框)。...当您需要重新验证其值由其他插件更新的字段时使用它。 默认情况下,一旦该字段已经被验证并被标记为有效的插件,该插件就不会重新验证该字段。当与其他插件一起使用时,字段值被更改,因此需要重新验证。
当你读取一个未定义的对象的属性或调用其方法时,这个错误会在 Chrome 中出现。 您可以很容易的在 Chrome 开发者控制台中进行测试(尝试)。 ?...要验证它们不相等,请尝试使用严格的相等运算符 ===: ? 在现实世界的例子中,这种错误可能发生的一种场景是:如果在加载元素之前尝试在 JavaScript 中使用元素。...Uncaught TypeError: Cannot set property 当我们尝试访问一个未定义的变量时,它总是返回 undefined,我们不能获取或设置任何未定义的属性。...ReferenceError: event is not defined 当您尝试访问未定义的变量或超出当前范围的变量时,会引发此错误。 您可以在 Chrome 浏览器中轻松测试。 ?...如果在使用事件处理系统时遇到此错误,请确保使用传入的事件对象作为参数。像 IE 这样的旧浏览器提供了一个全局变量事件,但并不是所有浏览器都支持。像 jQuery 这样的库试图规范化这种行为。
当你读取一个未定义的对象的属性或调用其方法时,这个错误会在 Chrome 中出现。 您可以很容易的在 Chrome 开发者控制台中进行测试(尝试)。...要验证它们不相等,请尝试使用严格的相等运算符 ===: 在现实世界的例子中,这种错误可能发生的一种场景是:如果在加载元素之前尝试在 JavaScript 中使用元素。...Uncaught TypeError: Cannot set property 当我们尝试访问一个未定义的变量时,它总是返回 undefined,我们不能获取或设置任何未定义的属性。...ReferenceError: event is not defined 当您尝试访问未定义的变量或超出当前范围的变量时,会引发此错误。 您可以在 Chrome 浏览器中轻松测试。...如果在使用事件处理系统时遇到此错误,请确保使用传入的事件对象作为参数。像 IE 这样的旧浏览器提供了一个全局变量事件,但并不是所有浏览器都支持。像 jQuery 这样的库试图规范化这种行为。