Axetroy

Results 128 issues of Axetroy

# Why 社区中有很多数据校验库,各功能不一。有些库有你想要的功能,有些库又没有。有写库又喜欢定义自己的模板,然后这些模板改着改着就成了 `Magic String(魔符)` 例如这样的模板: ``` validate(data, 'size:4') validate(data, 'size:2-4') validate(data, 'lt:20 || gt: 60 && is_prime') ... ``` 现在是大前端时代,讲究的是 All in Javascript。也符合 React 的哲学。另一个套路 Javascript in HTML(Template) 是不友好的(AngularJs...

技术
感想

![banner](https://cloud.githubusercontent.com/assets/9758711/26194098/e7f77ac4-3be9-11e7-9a1c-bb12b6f295c6.jpg) ### 情景:抽奖 大家都懂的,抽奖就安慰奖概率高,头奖概率低。虽然实际的抽奖业务中,都是后端在做,但是谁让咱有nodejs呢。前端开发人员也能过一把瘾。 ### API的设计 概率性的东西,就要用到随机函数**Math.random()**,但是只能随机产生0-1范围的随机数,那么怎么制定概率呢? 假设场景:现在要抽奖如下产品 - IPhone 8(1%) - Ipad(2%) - 纪念版T恤(12%) - 纪念版水杯(25%) - 空空如也(60%) 确保所有概率相加结果为1。 我们先假设API是这样的 ```javascript let roll = new Roll(); roll.add('IPhone 8', 0.01);...

学习

基于在上一家公司的开发经验,沉淀而来的web框架。 Kost 基于 Koa,使用 Typescript 编写,借鉴于 egg 的**约定大于配置**的思想以及 nest 的依赖注入和装饰器路由。 是一款内置多个功能,并遵循一系列规范的 Web 框架。 ### 框架架构 ![kost](https://raw.githubusercontent.com/axetroy/kost/master/kost.png) ## Q & A Q: 为什么开发这样的框架 > A: 框架基于以前的项目经验沉淀而来,首先是坚持 Typescript 不动摇,能在开发阶段避免了很多 bug。 Q: 为什么不使用...

技术

### Why? 在开发中,经常遇到数据校验,需要一个简单的,精准的优雅校验数据库对一些数据进行校验。 场景如下: - 配置文件校验 - 与他人对接的数据校验 - 接口参数的校验 - and so on... 社区找了一遍,好像并没有我想要的,索性就自己写一个,撸起袖子就是干。 本文主要讲解如何使用,以及实现原理。 ### API预览 ```javascript const Struct = require("@axetroy/struct"); const data = { name: "axetroy", age:...

技术

怎么说呢, 市面上的小程序框架都不令人满意. 要么太臃肿, Bug多, 要么过于封装(比如wepy) 总之, 对我来说就是不好用. 但是我又想使用npm社区的便利, 又不使用框架(兼容以前的小程序). 那么只好写个构建工具出来. 使用 Webpack + Babel 等技术 项目地址: https://github.com/axetroy/webuild ps: 本来想写个框架的 使用特定的声明方式(decorator, 像Angular)声明app/页面/组件. 但是后来尝试了一下, 复杂度太高. 基本上原生开发已经能满足我的需求了

技术

### WHY 对于经常造轮子的人来说,最痛苦的事莫过于配置开发环境。 如果你构建一个纯粹的库,你可能需要ES6支持,那么你需要Babel,还需要安装Babel,然后根据需要的特性安装preset,安装plugins 如果你需要构建一个React/Vue组件,那么就不是Babel那么简单,还需要配置Webpack。 包括一堆的Loader,plugins,entry,output,devServer等等,不厌其烦... 所以很迫切的需要一个零配置的开发工具,你看[parcel](https://github.com/parcel-bundler/parcel)不就是因为零配置备受推崇吗。 所以,自己撸一个工具,configless是目标,专注于打包库/组件. ```bash npm install @axetroy/libpack -g ``` ### 构建一个Vue组件 ```vue // index.vue Hello world This is an Vue example component console.log("Load component"); export...

技术

使用windows开发环境,首选的终端就是Git Bash. 但是它一直有一个Bug. 没有正确捕捉CTRL+C的信号并杀死进程. 闲来无事一翻它的更新日志,终于把这个BUG修复了。 再也不用打开任务管理器手动杀死进程了. [https://github.com/git-for-windows/msys2-runtime/pull/16](https://github.com/git-for-windows/msys2-runtime/pull/16) ### Git for Windows 2.16.0(2) #### New Features - Comes with Git Credential Manager v1.14.0. - The Git for Windows installer now offers...

踩坑

学习下AST,写一个简单的模板解析器 [pag](https://github.com/axetroy/pag) 也算是对刚刚过去的2017年做个总结: **Pack And Go** 充满了伤感与无奈

感想

源代码如下: ```javascript class Program extends EventEmitter { constructor() { super(); this.on("bootstrap", function() { this.run(); }); } run() {} } new Program() // bootstrap the app .on("error", err => { console.error("Something...

技术
学习

在日常开发中,会写一些轮子,服务,需要部署到线上,来个``online demo``,或者``try it out`` 而有些服务商,就专门提供了免费服务,可以部署你的应用 这里我们选择[Heroku](https://www.heroku.com/),以部署``NodeJS``和``Golang``为例 把部署过程记录下来,方便下次部署的适时候,想不起来还能翻一番 ### 部署前提 - [x] 一个Heroku账号,免费申请,免费应用数5个 - [x] 你应用的源码 - [ ] Heroku命令行工具(可选) ### NodeJS 我们这里搭建一个简单的HTTP服务器 你只需要2个文件即可部署 **package.json** ```json { "name": "heroku-deploy-example", "version": "1.0.0",...

学习