最近看到了这篇文章:科普文:为什么不能在服务器上 npm install ?,如这篇文章所说,在服务器上安装依赖确实不是个好行为,网络的波动或者再次遇上 left-pad 事件 等,都有可能导致发布失败。
文章中建议使用 Docker 打包项目进行部署,但没有具体的操作,因此写这篇文章供大家参考,因为之前没有使用过 docker 的经验,如有不足之处还请指出。
最近看到了这篇文章:科普文:为什么不能在服务器上 npm install ?,如这篇文章所说,在服务器上安装依赖确实不是个好行为,网络的波动或者再次遇上 left-pad 事件 等,都有可能导致发布失败。
文章中建议使用 Docker 打包项目进行部署,但没有具体的操作,因此写这篇文章供大家参考,因为之前没有使用过 docker 的经验,如有不足之处还请指出。
跨域问题算是一个比较常见的问题,对于不同的场景也有着不同的方法进行跨域。不过,在此之前我们要先了解什么情况算作跨域。
如果两个页面拥有相同的协议(protocol),端口(如果指定),和主机,那么这两个页面就属于同一个源(origin)。
也就是如果上面3个条件只要有一个不一样就算作跨域,我们再结合具体的例子看下。
发出请求的地址:http://exampl.com/index.html,下表是目标地址及对应的结果和解释。
url | 结果 | 解释 |
---|---|---|
http://example.com/other.html | 成功 | |
http://example.com/page/other.html | 成功 | |
http://sub.example.com/index.html | 失败 | 子域名不同 |
http://example.com:8080/index.html | 失败 | 端口号不同 |
https://example.com/other.html | 失败 | 协议不同 |
http://0.0.0.0/other.html | 失败 | 域名和域名对应的ip |
在没有接触到Git Hook之前,我一直都是在本地将代码push到远程仓库,然后再ssh到服务器上git pull
,想起来都心酸。这样手工操作不仅繁琐,还非常容易出错。好在Git为我们提供了hook这种好东西,能够在特定的事件触发时执行我们写好的脚本,实现自动化部署。
webpack是最近非常流行的一个模块加载器,它不仅能够像require.js
一样,能够加载js文件,还能加载css,png等文件。在某些时候,也能够替代gulp,grunt等自动构建工具,功能可以说是非常强大。不过功能强大的同时学习曲线也很陡峭,花了很长的时间才得以入门,在这里分享一下我的经验,如有不足之处还请指出。
最近买了个阿里云服务器用于做一些小项目,系统选的是CentOS 7 ,因为是第一次配置服务器环境,并且之前也没接触过Linux系统,整个过程可以说是困难重重,好在最后配置好了。写下这篇文章用作自己以后参考,也希望能够给大家一点帮助。
PS:下面的操作都是在Windows上执行
最近一直在使用visual studio code(以下简称vsc)作为我的主力编辑器,不过最近在使用vsc写node.js代码时却碰到了一个问题:竟然没有智能提示!!!对于我这种离开智能提示就写不出代码的人简直不能忍,于是赶紧去官网查了一下文档。原来vsc使用的是TypeScript definition文件为vsc提供基于JavaScript框架的智能提示以及在使用错误的API时的警告。
对于闭包,维基百科是这样解释的:
在计算机科学中,闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。
简单来说,就是函数可以使用函数之外定义的变量。
继承是面向对象语言的重要特性之一,但JavaScript的继承机制和其它的面向对象语言的继承不太一样,JS当中没有类这个概念,虽然class是个关键字,不能用作变量名。对于有其它OOP编程基础的人来说,在学习JS原型继承的时会候感觉非常奇怪。JS是用原型链作为实现继承的主要方法,类似于数据结构中的链表。
JS中的每个对象都有一个内部私有的链接指向另一个对象,这个对象就是原对象的原型。这个原型对象也有自己的原型,直到对象的原型为 null 为止(也就是没有原型)。这种一级一级的链结构就称为原型链。
在JavaScript中,变量的作用域分为全局作用域和局部作用域两种。
全局作用域
全局变量的作用域是当前文档中整个脚本区域,也就是在JS程序中的任何位置都可以使用这个变量。一般来说,以下几种情形拥有全局作用域:
对于这次任务不得不吐槽下题目的难度,即使任务的时间非常宽裕,但对于我这种初学者来说很多题目是完全不知道如何动手,只能不断的搜索相关的例子,来获得解决问题的思路,所以完成这次任务的时间比deadline多了好几天。但通过这次艰难的战斗,JS功力增长了几分,也掌握了一些页面效果的实现方法,这也算是这么多天的幸苦带来的回报吧。这次任务的成果:源码、在线预览,下面是关于这次任务的笔记。