2024年9月requirejs阮一峰(browser.min.js怎么样)
⑴requirejs阮一峰(browser.min.js怎么样
⑵browser.min.js怎么样
⑶首先,并非必需引入browser.min.js,引入它的作用是使浏览器支持babel,可以使用ES(javascript下一代标准,具体可以看阮一峰的ECMAScript入门进行编码。如果用ES,可以不引入
⑷js如何同时判断某个变量不是undefined也不是null也不是空啊
⑸if(typeof(str)==“undefined“){alert(“undefined“);}if(str==null){alert(“null“);}if(str==“”){alert(“空“);}目前,null和undefined基本是同义的,只有一些细微的差别。undefined表示“缺少值“,就是此处应该有一个值,但是还没有定义。null表示“没有对象“,即该处不应该有值。本段摘取自阮一峰的日志
⑹手把手教你使用nodejs编写cli(命令行)
⑺前端日常开发中,会遇见各种各样的cli,比如一行命令帮你打包的webpack,一行命令帮你生成vue项目模板的vue-cli,还有创建react项目的create-react-app等等等等。这些工具极大地方便了我们的日常工作,让计算机自己去干繁琐的工作,而我们,就可以节省出大量的时间用于学习、交流、开发、逛steam。但是有时候一些十分特别的需求,我们是找不到适合的cli工具去做的。比如说,你的项目十分庞大,你给项目添加一个新的路由,要经过创建目录-》创建.vue文件-》更新vue-router的路由列表这一趟流程,就算快捷键创建目录文件用得再熟悉,也比不过你一行命令来得快,特别是路由目录嵌套深,.vue文件初始化模板复杂的时候。所以呢,何不为自己项目写一个cli?就专门做这些繁琐的活?nodejs的cli,本质就是跑node脚本嘛,基本上每位前端er都会:然后命令行调用可以做得更逼真一点,我们在package.json里面的scripts字段上添加一下脚本名:然后命令行调用:但是,看到这里你肯定会说,人家webpack还有vue-cli都是“有名字”的!什么vue-cliinitapp、webpack-p的,多漂亮,看看这个命令行,nodeindex.js,还npmrunhello,谁不会啊,丑不拉几的,怕又不是来水文章的哦?差评!!别急啊各位大人,接下来就说说,如何给这个node脚本起个名字。姑且,先把这个cli的名字命名为hello-cli,就是我们能够在命令行里面,输入hello-cli,然后它就打印一句helloworld,没有node也没有npm,就是:这样,你的第一个cli脚本就成功安装了,可以在命令行里面,直接敲你的cli名字,看看结果输出吧。另外,如果你仅希望你的cli脚本仅在项目里执行,则需要在你项目里面新建一个目录,重复上述的操作,只是在第三步的时候,不要llink到全局里面去,而是使用npmi-Dfile:《你的脚本cli目录路径》,把它当成项目的依赖安装到node_modules里面去,如果安装成功,那么在项目的package.json你会看到多了一条依赖,这条依赖的值不是版本号,而是你脚本的路径。然后在node_modules里面会有一个.bin目录,里面就存放着你的可执行文件。当然,这样安装的cli脚本,必须在项目的package.json的scripts字段上声明脚本命令,然后通过npmrun的方式执行。哦?这样子使用的话不就回到最最最开始的时候那种原始的npmrunhello一样么。是的,但是有质的区别。使用nodeindex.js这种方式调用的话固然简单灵活,但是严重依赖脚本路径,一旦目录结构发生变动,写在scripts的命令就要更改一次;但是使用npm安装之后,本地的cli脚本就被拉到node_modules里面,目录结构变动对其影响不大。其次是不利于分享与发布,如果你想把你的cli脚本发布出去,那么有一个好听响亮的名字,比起在说明文档里面告诉使用者如何找到你的脚本路径再用node执行它,简直好上那么一万倍不是么?这里也给我们提供了一个cli开发流程思路:名字有了,输出也有了,看看我们跟那些大名鼎鼎的cli工具,在形式上还差点啥?对了,人家可以支持不同参数选项的,还可以根据输入的不同,产生不同的结果。这样吧,我们给这个cli加一个功能,既然叫hello-cli,那不能只会helloworld吧,必须要见谁就说hello才行:虽然这个功能很简单,但是至少也是实现了“根据输入的不同,产生不同结果”的效果。命令行上的参数,可以通过process这个变量获取,process是一个全局对象而不是一个包,不需要通过require引入。通过process这个对象我们可以拿到当前脚本执行环境等一系列信息,其中就包括命令行的输入情况,这个信息,保存在process.argv这个属性里。我们可以打印一下:打印结果:可以看出,argv是个数组,前两位是固定的,分别是node程序的路径和脚本存放的位置,从第三位开始才是额外输入的内容。那么实现上面的功能就很简单了,只要读取argv数组的第三位,然后输出出来就可以了。npm社区中也有一些优秀的命令行参数解析包,比如yargs,tj的mander.js等等如果你想使用比较复杂的参数或者命令,建议还是用第三方包比较好,手写解析太耗精力了。现在,你可以自由自在的写你自己的cli脚本了。如果你希望写一个项目打完包自动推上git的cli,或者自动从git仓库里面拉取项目启动模板,那么,你需要通过node的child_process模块开启子进程,在子进程内调用git命令:不仅是git命令,包括系统命令、其他cli命令都可以在这里执行。特别是系统命令,使用系统命令对文件目录进行操作,效率比fs高到不知道哪里去了。社区上也有一些不错的包,比如阮一峰老师推荐的shelljs如果你不那么希望你的cli用起来那么“硬核”,希望更人性化一点,比如提供一些友好的输入、提示啊,给你的输出加点颜色区分重点啊,写个简单的进度条啊等等,那么你就需要美化一下你的输出了。除了颜色这部分,不使用第三方包实现起来非常繁琐复杂,其他的功能,都可以试试自己写。颜色部分使用了第三方包colors,这里就不演示了。其他都是由nodejs自带的readline模块实现的。绘制的思路跟canvas绘制动画一样,只不过canvas是清除画布,而命令行这里是通过readline.clearScreenDown清除输出。这样,一个简易的,人性化的,带点点进度条动画的命令行cli工具就写好了,你也可以发挥你的想象力,去写一些更有趣的效果出来。毕竟我们前端,有浏览器我们可以写动画,没了浏览器我们一样可以写动画。
⑻JS对URL进行编码和解码
⑼Javascript语言用于编码的函数,一共有三个,最古老的一个就是escape()。虽然这个函数现在已经不提倡使用了,但是由于历史原因,很多地方还在使用它,所以有必要先从它讲起。实际上,escape()不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值。比如“春节“的返回结果是春节,也就是说在Unicode字符集中,“春“是第个(十六进制字符,“节“是第个(十六进制字符。它的具体规则是,除了ASCII字母、数字、标点符号“*_+-./“以外,对其他所有字符进行编码。在u到uff之间的符号被转成%xx的形式,其余符号被转成啑的形式。对应的解码函数是unescape()。还有两个地方需要注意。首先,无论网页的原始编码是什么,一旦被Javascript编码,就都变为unicode字符。也就是说,Javascipt函数的输入和输出,默认都是Unicode字符。这一点对下面两个函数也适用。其次,escape()不对“+“编码。但是我们知道,网页在提交表单的时候,如果有空格,则会被转化为+字符。服务器处理数据的时候,会把+号处理成空格。所以,使用的时候要小心。例如:编码:解码:encodeURI()是Javascript中真正用来对URL编码的函数。它着眼于对整个URL进行编码,因此除了常见的符号以外,对其他一些在网址中有特殊含义的符号“;/?:&=+$,#“,也不进行编码。编码后,它输出符号的utf-形式,并且在每个字节前加上%。它对应的解码函数是decodeURI()。例如:编码:解码:最后一个Javascript编码函数是encodeURIponent()。与encodeURI()的区别是,它用于对URL的组成部分进行个别编码,而不用于对整个URL进行编码。因此,“;/?:&=+$,#“,这些在encodeURI()中不被编码的符号,在encodeURIponent()中统统会被编码。至于具体的编码方法,两者是一样。它对应的解码函数是decodeURIponent()。例如:编码:解码:参考文章:阮一峰:关于URL编码
⑽JS实现HTTP请求头-BasicAuthorization
⑾HTTP协议中的Authorization请求消息头含有服务器用于验证用户代理身份的凭证,通常会在服务器返回Unauthorized状态码以及WWW-Authenticate消息头之后在后续请求中发送此消息头。
⑿格式是Basic字符串+空格+用户名:密码的Base编码。将凭证《credentials》部分进行Base编码,然后再拼接字符串’Basic’,就可以生成基础验证方案。因为DOMString是位编码的字符串,如果有字符超出了位ASCII编码的字符范围时,在大多数的浏览器中对Unicode字符串调用window.btoa将会造成一个CharacterOutOfRange的异常。所以下列方法将UTF-的DOMStrin转码为UTF-的字符数组然后再编码。
⒀将UTF-的DOMString转码成UTF-的字符串进行base编码
⒁使用eoLinker发送BasicAuth,输入用户名scar密码
⒂PS:eoLinker是一个很好用的接口管理网站,前端测试很方便
⒃在JSBin运行后,发现和eoLinker结果一致,成功!!
⒄AuthorizationAuthenticationJavascriptbaseBase的编码与解码Base笔记-阮一峰老师btoa方法
⒅Nodejs使用node-rsa加密数据
⒆RSA算法原理阮一峰、在node.js中使用rsa算法。首先需要是使用node-rsa包、实现加密/解密客户端需要使用一个jsencrypt.min.js包利用公钥对数据进行加密以上运行时可以会出现如下错误出现如上错误的时候,是服务端的加密方法和jsencrypt的加密方式不一致导致的。jsencrypt加密方式是pkcs,node-rsa默认的加密方式是pkcs_oaep。解决办法如下:
⒇js文件上传中遇到的知识点
⒈在前端开发中,我们经常遇到上传文件的需求,以前都是用到时再找资料,但总是感觉对这块不熟,最近翻资料学习了一下,记录一下。本文中涉及的知识点有:FileList对象,Blob对象,File对象,URL对象、FormData对象等。本文参考网道,总结而来。另外,强烈推荐网道,可以去网道的官方看看,是阮一峰大神发起的项目,提供互联网开发文档,文档非常全面易懂。FileList对象,是一个像数组的对象,拥有length属性和item()方法,同时,它的每一项都是File对象。input标签,将type设为file,之后得到的files属性就是一个FileList对象。blob对象表示个二进制文件的数据内容。blob对象和arraybuffer区别是,blob对象用于操作二进制文件,arraybuffer用于操作内存。blob对象拥有个属性和个方法,分别是size(单位是字节)、type属性和slice()方法。File对象是一种特殊的Blob对象。它在继承了size、type属性外,还同时有name、lastModified、lastModifiedDate等几个属性。FileList对象中的每一项都是File对象。拿到File对象之后就要进行操作,下面是操作。URL.createObjectURL(file)允许为File对象创建一个临时链接,FileReader对象的属性和方法比较多,属性中比较重要的是result,方法中比较重要的是FileReader对象的所有属性和方法可以参考这里,这里就不再列出来了。在早期的互联网时候,提交数据都是用表单。表单提交数据有些缺陷,例如无法校验表单数据,会刷新整个页面等。随着Ajax的兴起,页面表单提交数据慢慢退出历史舞台,但有时上传文件时我们偶尔会用到表单提交数据。在调用构造函数newFormData(form)构造formdata对象时需要传入form节点,如果不传入,则默认构建空表单。如果传入,则按照key=value的时候构建表单。可以看看效果图FormData对象主要的方法有:cavas压缩图片其实很简单,无非就是几个步骤:、选择图片,判断图片是否大于M(用File对象的size进行判断,size的单位是字节;、用FileReader对象读取文件成base,、然后创建Image对象,赋值src属性,在Image对象加载完成的回调里创建cavas并绘制图片(根据图片是否大于M动态调整画布大小);、将cavas转成blob,拼在formdata中用ajax上传。这篇文章到这里也就结束了,这篇文章包含了一些浏览器中提供的对象,可以看到都是很简单的内容。
⒉据统计,Web前端在国内乃至国际上真正开始受到重视的时间不超过年,而大学课程的缺乏,使这一职业人才缺口很大,很多人加入到学习Web前端的行列中来。
⒊传智播客是北京的品牌,虽然外地也有分校,不过既然要去自然去北京,那么既然去北京,咱们的首都优秀的UI培训机构可并不是一家两家,你的选择就很多了,自己实地调查一番,货比三家得出的结论我相信比任何人的回答都要靠谱。
⒋推荐理由:传智播客是一个相对靠谱的培训机构!
⒌学校管理模式还可以,上课时间是早点-晚点,晚自习一直到晚上点才放学。上两天课休息一天,上课禁止玩手机,基础班需要考试通过才能上就业班等,管理氛围还不错,如果大学基础知识比较差,可以考虑。
⒍爱创课堂高级前端开发工程师特训营,共个教学日+个线上真实项目+名企运营项目,课程饱满,百度大神+业界名师亲自授课,全网最优秀的基础培训班!
⒎推荐理由:培训入门是可以的,大大缩短普通人的上手时间,张容铭老师讲的课不错!
⒏百读易莱胜是上海其中一家专业培养Web前端开发的学习基地,目前主要培养的课程HTML,HTML,CSS,CSS,JAVA,JQUERY,BOOTSTRAP,ANJULAR.JS,NODE.JS,UI,REQUIREJS,BACKBONEJS等技术,教学总监亲自面授,实力教学,大专以上学员,接受免费试听,阶段性测试不过关可重听,助教全称辅导。以实战教学为主,从基础入门到精通,报名即可入学,理论+实战操作,就业有保障。
⒐推荐理由:小班面授,全力打造过硬的教学,可以学到技术,还有他家发布的教学视频很不错!
⒑如果你是自己有点基础,买几本书自学,关于htnl+css,还有javascript,jquery,还可以看视频,学得更快,讲的详细不怕看不懂,淘宝很多卖传智前端就业班视频的,老师水平都不错的。