宝丁

Results 45 issues of 宝丁

``` const callerMap = {}; function getCaller(error) { if (error && error.stack) { const lines = error.stack.split('\n'); if (lines.length > 2) { let match = lines[2].match(/at ([a-zA-Z\-_$.]+) (.*)/); if (match)...

随着 Node 的发展,对于前端开发工程师来说,Node的使用场景也变得越来越多,而 Node 中的模块系统是 Node 的基础。那么什么是 Node 模块呢? 它可以说是构建应用程序的基础,也使得函数和变量私有化,不直接对外暴露出来,接下来我们就要介绍进一步详细的介绍 Node 的模块化系统和它最常用的模式。 ## 一、Module ### 1.1 Module 的本质 我们都知道,JavaScript 有一个很大的缺陷就是缺少 namespacing 的概念,程序运行在全局作用域下,很容易被内部应用程序的代码或者是第三方依赖程序的数据所污染,一个很典型的解决方案就使通过 IIFE 来解决,本质上是利用闭包来解决 ``` const module = (() =>...

在本文中,笔者将会为大家介绍一些JavaScript在发展过程中的一些**重要的**设计缺陷,这些缺陷往往使得JS新手在开发过程中**容易犯错**。 ## 过时的功能 ### 有状态的 RegExp 函数 **stop talking show me the code** ``` const re = /example/g; console.log(re.test('example test')); console.log(re.test('example test')); ``` 按照大家对于正则的理解,上面的返回结果应该是`true true` 先来看看在控制台上运行以上代码的结果: ![15324994198325](https://user-images.githubusercontent.com/9164818/43236851-b66bf784-90b9-11e8-95e5-945c9292b32c.jpg) 最后代码运行的结果和我们的预期结果不一致,导致这样的结果是因为在JS的RegExp中存在一个lastIndex属性。 只有正则表达式使用了表示全局检索的 "g"...

``` function _isInsidePolygon(pt, poly) { for (var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i) ((poly[i].y

``` (?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]) ``` ```javascript /^(([^()\[\]\\.,;:\s@"]+(\.[^()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ ```

## 怎么使用nginx和docker来搭建web应用呢? ``` docker run -d -p 9999:80 --name rweb -v your_web_static_html:/usr/share/nginx/html:ro -d nginx ``` **nginx的docker镜像默认只会开启80端口**

在使用parcel过程中遇到的一些问题: * parcel 目前版本 15.1 是不支持 .babelrc.js 的 因为 目前使用的是 babel 6版本 * parcel使用最新的beta版本的@babel/xxx 不兼容 会存在许多问题 不建议使用 * parcel 打包文件的时候会生成.cache文件 如果终止了该过程,重新进行一次打包 建议移除.cache文件,可能会因为缓存的原因导致没有及时更新. 持续更新...

先说一下背景,最近再发一个自己的SPA应用的时候,使用了React系全家桶,路由使用了ReactRouterV4.0版本,使用了history模式。在本地开发过程中,没有什么问题,刷新什么的非常好使。 但是当该项目开发的进入尾声的时候,将其部署到服务器,因为都是静态资源,所以就直接用nginx做一下资源代理。而且还有一个使用nginx做反代的原因是因为前后端分离,服务端和前端应用部署不在同一个机器上,需要对API进行反代,当然nginx还有其他非常强大的功能,就不一一列举了。 于是,很快,我就把nginx的配置配好了,如下: ``` server { listen 8099; root /home/ubuntu/r-web/build/; charset utf-8; access_log /var/log/fe.log; location /api/v1/ { proxy_pass http://demo.server.com/api/v1/; } } ``` 大概的意思就是 应用在8099端口号下,静态资源位于 `/home/ubuntu/r-web/build/`下,会主动去找该文件夹下的`index.html`文件,log文件会放在`/var/log/fe.log`文件下,对于`/api/v1/`下的api路由会被转发到 `http://demo.server.com/api/v1/`下。更多的配置可以大家参考nginx配置的文章。 乍一眼看过来是没有问题的,我们访问对应的`ip:port`也是OK的,但是当我们进入应用的某一个路由时,刷新一下,边看到浏览器的“丑恶嘴脸” ![15171540836242](https://user-images.githubusercontent.com/9164818/35484316-5fdb430a-0489-11e8-9005-b6d8a00c9d34.jpg) 发现这个的时候真的是 “天啊,重大的问题啊!”,但是,发现问题,解决问题,是我们的天性,冷静下来,思考,为什么本地是OK的,用nginx配置后就失败了呢?...

React Router v4出来很久了,你们觉得它好用么? ## 思维上的转变 在我看来,ReactRouter V4虽然已经出来很久了,但是并没有在前端圈内掀起热潮,当我从原来的V3版本切换到了现在的V4版本之后,用的非常不顺心,不仅仅是它的API进行了颠覆式的改变,更值得去改变的而是V3 => V4理念上的改变————**遵循一切都是组件的思维,React Router V4提供的Route Link Switch等都是组件**。 我们原来写router的配置的时候,一般都会把所有的配置写在一个文件内,来进行管理路由,但是在V4版本的ReactRouter中,我们不能再使用这样的思维,不然,再复杂的页面的路由处理上会非常的蛋疼(心里苦)。 原来的V3版本的ReactRouter中,我们可以根据Route的嵌套关系来进行路由之间的嵌套,然后在使用`this.props.children`来直接引入到Component/Containers中即可,但是在V4版本中,就不能直接通过这种方式来使用了。 ``` // V3 ``` ``` // V4 //自己定义的组件 ``` 以及原来的动态的路由的方式也变了,在V3版本中,我们直接通过`browserHistory.push`的方法 来进行动态的路由的跳转即可,但是在V4版本中,我们就不能这么用了,而必须要通过withRouter高阶组件的方式去进行路由的跳转 ``` // V3 import...

出错记录: ``` template: index: "index" is an incomplete or empty template ``` 原因是 `template.New()`函数的参数和模板名没有对应导致的问题!