热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

compress.js的简单介绍

本文目录一览:1、压缩的JS文件怎么修改呢2、

本文目录一览:


  • 1、压缩的JS文件怎么修改呢


  • 2、轻松压缩JS文件


  • 3、node.js 基础操作


  • 4、如何压缩js

压缩的JS文件怎么修改呢

1.

一般js压缩的,都有未压缩的文件,直接可以改未压缩的文件,到时引入的时候,也改成那个未压缩的js文件

2.

如果找不到未压缩的js文件,那就只能想办法把js压缩的文件格式化,改起来才方便,毕竟压缩过的就几行代码,不格式话下,估计都找不对位置

轻松压缩JS文件

在任意文件夹下按住shift按键的同时,点击鼠标右键

打开powershell命令窗口

执行命令: npm install uglify-js -g

首先,打开cmd

其次,查找要压缩的js文件,查找方法如下:

1、输入文件所在位置

例如,我需要压缩的文件在E盘中,就输入  e:

2、输入:cd + js文件所在位置

例如,我需要压缩的js文件在:E:\electron-vue\topology\static\new_node_modules\topology-vue

就执行:cd electron-vue\topology\static\new_node_modules\topology-vue

3、输入:uglifyjs + 要压缩的js文件名称 +  -o +  压缩后js文件名称

例如,我要将topology-vue.umd.js文件压缩成topology-vue.umd.min.js

就执行:uglifyjs topology-vue.umd.js -o topology-vue.umd.min.js

你没看错!

就是这么简单!!

将JS文件进行压缩,让你的程序快马加鞭地跑起来吧!!!

node.js 基础操作

require 函数用来在一个模块中引入另外一个模块。传入一个模块名,返回一个模块导出对象。用法: let cc = require("模块名") ,其中模块名可以用绝对路径也可以用相对路径,模块的后缀名.js可以省略。例如:

require()函数用两个作用:

exports 对象用来导出当前模块的公共方法或属性,别的模块通过 require 函数使用当前模块时得到的就是当前模块的 exports 对象。用法: exports.name ,name为导出的对象名。例子:

module.exports 用来导出一个默认对象,没有指定对象名,常见于修改模块的原始导出对象。比如原本模块导出的是一个对象,我们可以通过module.exports修改为导出一个函数。如下:

3.加载第三方包

Node.js中使用 CommonJs 模块化机制,通过 npm 下载的第三方包,我们在项目中引入第三方包都是: let xx = require('第三方包名') ,究竟 require 方法加载第三方包的原理机制是什么,今天我们来探讨下。

require('第三方包名') 优先在加载该包的模块的同级目录 node_modules 中查找第三方包。

找到该第三方包中的 package.json 文件,并且找到里面的 main 属性对应的入口模块,该入口模块即为加载的第三方模块。

如果在要加载的第三方包中没有找到 package.json 文件或者是 package.json 文件中没有 main 属性,则默认加载第三方包中的 index.js 文件。

如果在加载第三方模块的文件的同级目录没有找到 node_modules 文件夹,或者以上所有情况都没有找到,则会向上一级父级目录下查找 node_modules 文件夹,查找规则如上一致。

如果一直找到该模块的磁盘根路径都没有找到,则会报错: can not find module xxx 。

4.npm命令

npm 英文全称: node package manager ,npm 为你和你的团队打开了连接整个 Javascript 天才世界的一扇大门。它是世界上最大的软件注册表,每星期大约有 30 亿次的下载量,包含超过 600000 个 包(package) (即,代码模块)。来自各大洲的开源软件开发者使用 npm 互相分享和借鉴。包的结构使您能够轻松跟踪依赖项和版本。我们平时开发项目都是需要使用npm下载依赖,常见的npm命令总结如下:

5.文件读取

var fs = require('fs')

同步:

var cOntent= fs.readFileSync('hello.txt',{flag:'r',encoding:"utf-8"})

异步(默认):

flag:读取模式

encoding:编码格式

7.文件写入

var fs = require('fs')

格式:write=w read=r append =a

异步:

8.文件删除

fs . unlink ( 'lc.txt' , function (){

9.buffer缓冲区

1、数组不能进行二进制数据的操作2、js数组不像java、python等语言效率高3、buffer内存空间开辟出固定大小的内存

let buf1 = Buffer.alloc(10)

console.log(buf1)

allocUnsafe(之前的一些内容)(效率高)

10.文件目录

var fs = require('fs')

fs.readdir(path,callback)

导入 readline 包

let readline = require('readline');

实例化接口对象(process对象,stdout/in输入输出)

question方法 提问

close 事件监听

11.文件流

var fs = require('fs')

语法: fs.createWriteStream(文件路径,【可选的配置操作】)

let ws = fs.createWriteStream("hello.txt",{flags:"w",encoding:"utf-8"});

let ws = fs.createWriteStream("hello.txt",{flags:"w",encoding:"utf-8"});

实践

fs.createReadStream(路径,【可选的配置项】)

文档

let rs = fs.createReadStream('hello.txt',{flags:'r',encoding:"utf-8"})

音乐

let rs = fs.createReadStream('snake.mp4',{flags:'r'})

读取时写入

let ws = fs.createWriteStream('a.txt',{flags:"w",encoding:"utf-8"})

createReadStream.pipe(createWriteStream)

链式是通过连接输出流到另外一个流并创建多个流操作链的机制。链式流一般用于管道操作。

接下来我们就是用管道和链式来压缩和解压文件。

创建 compress.js 文件, 代码如下:

代码执行结果如下:

执行完以上操作后,我们可以看到当前目录下生成了 input.txt 的压缩文件 input.txt.gz。

接下来,让我们来解压该文件,创建 decompress.js 文件,代码如下:

12.node事件

Node.js 是单进程单线程应用程序,但是因为 V8 引擎提供的异步执行回调接口,通过这些接口可以处理大量的并发,所以性能非常高。

Node.js 几乎每一个 API 都是支持回调函数的。

Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现。

Node.js 单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,每个异步事件都生成一个事件观察者,如果有事件发生就调用该回调函数.

没有使用 events 包 仅使用Javascript事件监听进行事件驱动

Node.js 使用事件驱动模型,当web server接收到请求,就把它关闭然后进行处理,然后去服务下一个web请求。

当这个请求完成,它被放回处理队列,当到达队列开头,这个结果被返回给用户。

这个模型非常高效可扩展性非常强,因为 webserver 一直接受请求而不等待任何读写操作。(这也称之为非阻塞式IO或者事件驱动IO)

在事件驱动模型中,会生成一个主循环来监听事件,当检测到事件时触发回调函数。

Node.js 有多个内置的事件,我们可以通过引入 events 模块,并通过实例化 EventEmitter 类来绑定和监听事件,如下实例:

以下程序绑定事件处理程序:

我们可以通过程序触发事件:

接下来让我们执行以上代码:

在 Node 应用程序中,执行异步操作的函数将回调函数作为最后一个参数, 回调函数接收错误对象作为第一个参数。

接下来让我们来重新看下前面的实例,创建一个 input.txt ,文件内容如下:

创建 main.js 文件,代码如下:

以上程序中 fs.readFile() 是异步函数用于读取文件。如果在读取文件过程中发生错误,错误 err 对象就会输出错误信息。

如果没发生错误,readFile 跳过 err 对象的输出,文件内容就通过回调函数输出。

执行以上代码,执行结果如下:

接下来我们删除 input.txt 文件,执行结果如下所示:

因为文件 input.txt 不存在,所以输出了错误信息。

Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列。

Node.js 里面的许多对象都会分发事件:一个 net.Server 对象会在每次有新连接时触发一个事件, 一个 fs.readStream 对象会在文件被打开的时候触发一个事件。所有这些产生事件的对象都是 events.EventEmitter 的实例。

events 模块只提供了一个对象:events.EventEmitter。EventEmitter 的核心就是事件触发与事件监听器功能的封装。

你可以通过require("events");来访问该模块。

EventEmitter 对象如果在实例化时发生错误,会触发 error 事件。当添加新的监听器时,newListener 事件会触发,当监听器被移除时,removeListener 事件被触发。

下面我们用一个简单的例子说明 EventEmitter 的用法:

执行结果如下:

运行这段代码,1 秒后控制台输出了 'some_event 事件触发' 。其原理是 event 对象注册了事件 some_event 的一个监听器,然后我们通过 setTimeout 在 1000 毫秒以后向 event 对象发送事件 some_event,此时会调用some_event 的监听器。

EventEmitter 的每个事件由一个事件名和若干个参数组成,事件名是一个字符串,通常表达一定的语义。对于每个事件,EventEmitter 支持 若干个事件监听器。

当事件触发时,注册到这个事件的事件监听器被依次调用,事件参数作为回调函数参数传递。

让我们以下面的例子解释这个过程:

执行以上代码,运行的结果如下:

以上例子中,emitter 为事件 someEvent 注册了两个事件监听器,然后触发了 someEvent 事件。

运行结果中可以看到两个事件监听器回调函数被先后调用。这就是EventEmitter最简单的用法。

EventEmitter 提供了多个属性,如 on 和 emit 。 on 函数用于绑定事件函数, emit 属性用于触发一个事件。接下来我们来具体看下 EventEmitter 的属性介绍。

如何压缩js

简单的压缩一般是:删除注释和空白符,替换变量名。

更激进点的做法还包括:删除无用代码,内联函数,等价语句替换等。

有些开发者出于保护代码的原因,还可能会对代码进行混淆处理。

通常深度压缩JS都必须要做的一步就是尽量地缩短变量名,因为一份体积巨大的JS代码,其中的变量名会占去不少空间。

压缩js必须要注意:

1、压缩前的代码格式要标准。因为去掉换行与空格时,所有语句就变成一行,如果你的代码有瑕疵(比如某行少了个分号),那就会导致整个文件报错。当然,现在有的压缩工具已经比较智能了。

2、备份原文件。压缩很可能不会一次成功,一般要多试,多改。

js压缩工具:

1. YUI Compressor

2. Google Closure Compiler


推荐阅读
  • 本文深入探讨了Redis中的两种主要持久化方式——RDB(Redis Database)和AOF(Append Only File),并详细解析了两者的实现机制、优缺点以及在实际应用中的选择策略。 ... [详细]
  • 基于Node.js、Express、MongoDB和Socket.io的实时聊天应用开发
    本文详细介绍了使用Node.js、Express、MongoDB和Socket.io构建的实时聊天应用程序。涵盖项目结构、技术栈选择及关键依赖项的配置。 ... [详细]
  • Node.js 入门指南(一)
    本文介绍了Node.js的安装步骤、如何创建第一个应用程序、NPM的基本使用以及处理回调函数的方法。通过实际操作示例,帮助初学者快速掌握Node.js的基础知识。 ... [详细]
  • 了解如何快速搭建属于自己的个人博客,无需编程基础,适合Mac和Windows用户。通过本文,您将学会使用GitHub Pages和Hexo构建一个完全自主的在线空间。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • 最近团队在部署DLP,作为一个技术人员对于黑盒看不到的地方还是充满了好奇心。多次咨询乙方人员DLP的算法原理是什么,他们都以商业秘密为由避而不谈,不得已只能自己查资料学习,于是有了下面的浅见。身为甲方,虽然不需要开发DLP产品,但是也有必要弄明白DLP基本的原理。俗话说工欲善其事必先利其器,只有在懂这个工具的原理之后才能更加灵活地使用这个工具,即使出现意外情况也能快速排错,越接近底层,越接近真相。根据DLP的实际用途,本文将DLP检测分为2部分,泄露关键字检测和近似重复文档检测。 ... [详细]
  • 本文详细介绍了在企业级项目中如何优化 Webpack 配置,特别是在 React 移动端项目中的最佳实践。涵盖资源压缩、代码分割、构建范围缩小、缓存机制以及性能优化等多个方面。 ... [详细]
  • jQuery HooRay:一款自创的实用 jQuery 工具插件
    这款插件主要由作者在工作中积累的常用功能开发而成,旨在解决现有插件间的冲突及浏览器兼容性问题。通过整合和优化现有插件,确保其稳定性和高效性。 ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 本文探讨了如何在Node.js环境中,通过Tor网络使用的SOCKS5代理执行HTTP请求。文中不仅提供了基础的实现方法,还介绍了几种常用的库和工具,帮助开发者解决遇到的问题。 ... [详细]
  • 本文详细介绍了 Node.js 中 Worker.isMainThread 属性的功能、用法及其实例代码,帮助开发者更好地理解和利用多线程技术。 ... [详细]
author-avatar
笑点已阵亡
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有