Giter Site home page Giter Site logo

excuse-me's People

Contributors

lvleihere avatar

Watchers

 avatar

excuse-me's Issues

这里有你想使用的npm包分类~

1.HTTP requests (HTTP 请求)

  • request
  • axios
  • superagent

2.Server Frameworks

  • Express
  • Koa
  • Hapi
  • Sails

3.Validation (前端验证)

  • Ajv
  • Joi

4.Authentication (身份认证)

  • Passport

5.Asynchronous (异步)

  • Async
  • async / await (Native)
  • Promise

6.Database (数据库)

  • mysql
  • node-postgres
  • node-mongodb-native
  • Mongoose
  • Knex
  • Objection

7.Process management (进程管理)

  • pm2
  • forever
    -nodemon

8.Web Sockets

  • Primus

9.API documentation (API 文档)

  • Swagger-node

10.Utilities/misc (通用工具/杂项)

  • Lodash
  • Ramda
  • Moment
  • UUID
  • Fs-extra
  • Nodemailer (send email)
  • Dotenv (当您需要将 .env 文件中的环境变量加载到 process.env 时使用)

11.CLI (命令行界面)

  • Commander
  • Inquirer
  • Table
  • cli-table2

12.Logging (日志)

  • Winston
  • Bunyan
  • Morgan

13.Templating (前端模板)

  • Pug
  • EJS

14.Testing (测试)

  • Karma
  • jasmine
  • Mocha
  • chai
  • Sinon

15.Tooling (开发工具)

  • ESdoc
  • JSdoc
  • ESlint

16.debugger

17.util (相关工具方法)

  • util

参考

crontab日常

快速启动

  • crontab -e 快速编辑/创建一个系统定时器
  • ctontab -l 罗列所创建的系统定时器

环境变量问题

有时候本地的项目能跑,使用crontab就不行了,原因就是crontab有自己的一套初始化环境。

按照以下步骤进行便可解决:

  • 查看调试环境信息
# Linux执行
env
  • 复制
HOME: xxx
PATH: yyy
SHELL: zzz
  • 切root,修改crontab配置,修改以上3类配置
# root环境
vi /etc/crontab
  • 修改crontab,再次尝试
00 10 * * * source $HOME/.zshrc(bash_profile) && your other task here
  • 查看log信息
# work环境
vi /var/spool/mail/work

over!

怎么直观看是否可枚举~

在控制台看,高亮的就是可枚举的,哈哈

举例举例:

ES5构造函数创建实例对象:

function Parent() {
    this.name = 'lvlei';
}
Parent.prototype.show = () => {
    console.log('show');
}

let parent = new Parent();
console.log(parent);

可以只直观看出,nameshow字段是可枚举(高亮)的嘛
image

再看看通过ES6语法的class创建的实例对象:

class Parent {
    constructor() {
        this.name = 'lvlei';
    }
    show() {

    }
}

let parent = new Parent();
console.log(parent);

可以只直观看出,name字段是可枚举(高亮)的,而show是不可枚举(没高亮)的~

image

支持浏览器

  • chrome
  • opera

eventLoop再看browser和node

eventLoop谁不能说上两句呢,看过文章数百篇,不能记住也能倒背~

浏览器与node

  • 相同点
    • 都是主执行栈代码执行完,再执行microTask,然后执行macroTask
    • macroTask中都有 setTimeout setInterval I/O layout paint
    • microTask中都有 Promise
    • macroTask 和 microTask 都有着自己的队列
    • 都有 requestAnimationFrame
    • 都有 requestIdleCallback
  • 不同点
    • macroTaskmicroTask 执行顺序:
      • 浏览器端 macroTask -> microTask(清空队列执行) -> macroTask(弹出队列第一个执行) -> microTask(清空队列执行) -> macroTask(弹出队列第一个执行) ... 直到执行完所有队列的事件

      • Node端 macroTask -> microTask(清空队列执行) -> macroTask(弹出全部队列执行) -> microTask(清空队列执行) -> macroTask(弹出全部队列执行) ... 直到执行完所有队列的事件

    • Node端有process.nextTick() 并且优先级比 Promise高

注意

  • 在一次事件循环中:普通task每次出队一项回调函数去执行,requestAnimationFrame每次出队所有当前队列的回调函数去执行(requestIdleCallback一样),microtask每次出队所有当前队列的回调函数以及自己轮次执行过程中又新增到队尾的回调函数。

image
《Jake Archibald大神的JSConf演讲视频截图》

  • requestAnimationFrame在style和layout计算之前执行,requestIdleCallback则是在变更真正渲染到页面后执行

附录

image

《 browser端 图片来自 https://juejin.im/post/5c0cb3acf265da61362248f3
image

《 node端 图片来自 https://juejin.im/post/5c0cb3acf265da61362248f3

Go-环境初beego初始化

Go framework众多,该如何选择呢,看一下这个关于github的star rand吧~ Go Web框架集合

可见beego排名No.1,那么如何跑起来呢~

  • step 1
    安装Go不用说了

  • install beego
    go get github.com/astaxie/beego

  • install bee
    go get github.com/beego/bee

具体装到哪里去了,可以使用 export 查看~

  • 创建一个demo
package main

import "github.com/astaxie/beego"

func main(){
    beego.Run()
}

走一波~

go build hello.go && ./hello

打开localhost:8080 初始化就完成了

  • install bee

bee 工具是一个为了协助快速开发 beego 项目而创建的项目,通过 bee 您可以很容易的进行 beego 项目的创建、热编译、开发、测试、和部署。

  • 环境问题
    使用go env 查看GOPATH,将GOPATH添加到你的环境变量吧~
cd ~/.zshrc
export PATH="${PATH}:your_go_path/bin"
source ~/.zshrc

执行bee versoin
image

然后你一脸懵逼,发现一个warning,说好的0 error(s) 0 warning(s) 呢!!

哦,你再看了一下warning信息,发现是GOPATH没写入环境中。小问题~

vi ~/.zshrc
export GOPATH="your_go_path"
source ~/.zshrc

再次撸起Golang吧~

Linux安装配置Mysql,并进入生产环境

啧啧啧centos6.5、7.5都玩过

介绍下还算靠谱的centos7.5的安装方法

  • 清理工作
    rpm -qa | grep mysql查看当前有哪些mysql包
    rpm -e --nodeps + 包名 进行卸载
    清除mysql-server yum remove mysql-server

  • 安装Mysql5.7

    • 下载源
      $: wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
    • 安装源
      $: yum localinstall mysql57-community-release-el7-7.noarch.rpm
    • 安装mysql-server
      $: yum install mysql-server
  • 查看版本
    $: mysql --version

  • 启动mysqld
    $: systemctl start mysqld

  • 查看临时密码
    $: grep 'temporary password' /var/log/mysqld.log

  • 修改密码
    $: mysql_secure_installation
    $: systemctl restart mysqld

  • 允许所有外网访问
    $: mysql -u root -p
    mysql>use mysql;

mysql> update user set host='%' where user='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
  • navicate链接试试

MVVM-computed设计初衷到底是啥

一看到 computed 很多同学肯定会说这有啥想的,肯定是计算某个值呗,嗯,对了一半

0.�模板(Mustache)

在常见的mvvm框架中,你可以再模板里面使用 Mustache 语法进行属性值绑定( {{}} ),常见的mvvm框架支持在 Mustache 里进行如下编写(提供了完全的表达式[expression]支持):

  • 普通js语法
<div bar="{{ name.toString() }}"></dvi>
  • 三元运算符
<div bar="{{ hasName ? 'tom' : 'none' }}"></dvi>
  • 较为复杂的计算
<div bar = "{{ name.split('').reverse().join('') }}">

这些表达式在mvvm框架编译阶段会被准确的解析,有益必有限,也就是你只能绑定单个表达式,一下情况是不被允许的:

  • 包含语句的
<div bar="{{ var name = 'tom' }}"></dvi>
  • 控制流形式的
<div bar="{{ if (hasName) { //xx }}}"></div>

1.解决的问题

以上述 较为复杂的表达式 为例,一旦表达式过长,是不是整个模板给人的印象全是一坨js代码,难以维护,甚至不知所云,此时 computed 应运而生~

computed 专注于解决一些需要计算,然后给出返回值的场景,将模板中复杂的单一表达式放入computed中进行维护,是 computed 真正的才能所在,如:

<div bar = "{{ splitedStr }}">
new Xxx({
  data() {
      return {
        name: 'tom'
      }
  },
  computed: {
    splitedStr() {
      return name.split('').reverse().join('');
    }
  }
});

2.侦听属性 watch

如果你所使用的mvvm框架中正好包含 侦听属性watch, 那么它与计算属性的区别往往是 侦听属性往往是用来观察和响应实例上的数据变动,而计算属性更倾向于解决模板单一表达式混杂问题和模板中单一表达式限制问题。

参考

use the substring() method instead of substr()

Warning: Although String.prototype.substr(…) is not strictly deprecated (as in "removed from the Web standards"), it is considered a legacy function and should be avoided when possible. It is not part of the core JavaScript language and may be removed in the future. If at all possible, use the substring() method instead.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.