Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all 14821 articles
Browse latest View live

web_tools使用 Koa2 + Mysql 搭建工具权限管理平台

$
0
0

web_tools

使用 Koa2 + Mysql 搭建工具管理平台

开源地址: https://gitee.com/null_639_7345/web_tools

开发环境

  • Node.js: 6.11.0
  • Mysql: 5.5.40
  • Koa: 2.0.0

效果

6.png10.png

Release notes

V 1.0

v1.0.0版本功能介绍
  1.未登录是可查看所有的外链工具
  2.登录后
  	可修改密码
  	根据账号所在组权限可使用不同工具(如:管理员组:用户管理...)
  	查看工具使用记录(最近15条,不记录外链工具)
	3.管理员登录后
		用户管理:添加和修改用户,分配用户组权限。
		组权限管理:添加、修改、删除组的工具的访问权限和提交权限。
		工具管理:添加、修改工具信息。

V 2.0(2017 年 10 月 19 日 16:32:43)

	v2.0.0版本新增功能介绍
	1.新增列表风格版首页
	2.图标版新增手机快速扫码访问
	3.图标版新增动态搜索功能
	4.列表版自带搜索·排序功能
	5.修改查看工具使用记录最多为10条
	6.修改若干样式
	7.图标版皮肤切换

怎样添加一个新的工具?

kails

Build Status

A Web App like Ruby on Rails with Koa2, Webpack and Postgres.

This project is like Ruby on Rails Project:

  • MVC
  • Database (postgres), ORM(sequelize)
  • migration(sequelize-cli)
  • assets compile(webpack)
  • Session with redis
  • Password with bcrypt
  • Testing (mocha)
  • Lint (eslint)
  • middlewares
  • console
  • server side render with react
  • flash message

Requirements

  • node ^4.0.0
  • npm ^3.0.0

Features

  • User system
  • Post article with markdown editor
  • Hacker news middlelayer

Structure

├── app
│   ├── assets
│   │   ├── images
│   │   ├── javascripts
│   │   └── stylesheets
│   ├── controllers
│   ├── helpers
│   ├── models
│   ├── routes
│   ├── services
│   ├── views
│   └── index.js
├── config
│   ├── config.js
│   └── webpack
│       ├── base.js
│       ├── development.js
│       └── production.js
├── db
│   └── migrations
├── index.js
├── package.json
├── public
└── test

Build development environment on localhost

  1. install nodejs
  2. install redis and mysql
  3. create mysql database:
  4. clone and start this project
npm install
npm run webpack_dev
npm run start
  1. Visit http://localhost:7000/

Deploy on production

How to Deploy Kails

How to Deploy Kails With Docker

Commands with npm

# migrate database
npm run db:migrate
NODE_ENV=test npm run db:migrate
# run for development. it start app and webpack dev server
npm start
# run the app
npm run app
# run the lint
npm run lint
# run test
npm test
# deploy
npm run build
npm run assets_compile
NODE_ENV=production npm run db:migrate
npm run pm2
# console
npm run console

Author

Blog

License

MIT


Nodejs 如何字段值为null,JSON不返回该字段

$
0
0

字段值为null,JSON不返回该字段 下面是java image.png

想问下nodejs是否可以, var bodyParser = require(‘body-parser’); //json

腾讯云 360 元买 6年半的教程,别的咋都不说清楚呢?

$
0
0

褥CVM的羊毛:

  1. 购买链接: https://cloud.tencent.com/act/campus/group/detail?group=10524请用微信或者其他浏览器打开。根据实际情况购买。 机房选择成都,降配时,可以返还更多时间。机房选择成都,降配时,可以返还更多时间。机房选择成都,降配时,可以返还更多时间。
  2. 续费链接: https://cloud.tencent.com/act/campus续费时长随意。
  3. 降低配置: https://console.cloud.tencent.com/cvm/index后台控制台 - 更多 - 云主机设置 - 调整配置。选择 1G 内存,会返还时间。

PS: 如果感觉 1C1G 够用的话,最多可以用 6年半,但是记得要选择 成都机房。 如果感觉 1C2G 才够的话,哪个机房都可以。 续费时的学生认证,随便填都可以。 续费时间越长,返还时间越多。 附上一张成都机房的羊毛:

mongoose 查询文档的时候能直接得到某个属性的集合吗?

$
0
0

举个栗子 例如查询年龄是30岁的用户(_id, username, age)的用户名列表

User.find({age:30}, function(users){
	// 这里得到的只是user列表, 我想知道mongoose查询能不能直接得到 username列表?
	// 这样就不用我再新建一个数组遍历赋值了
})

请不要让薅羊毛的帖子入侵技术社区。

$
0
0

如题。如果再有发此类帖子的,一定会删。各种群更适合发此类信息。

请问,集群情况下的并发控制问题怎么思考

$
0
0

举例: 当我使用Nodejs做集群,N个进程同时接受访问。 此时需要做一个物品秒杀功能,这个时候怎么去做并发控制? 除了为Mysql设置同步锁还有其他的方案吗?

纯JS滚动内容插件:scroll-slide

$
0
0

前言

在前端学习的过程中,发现实现内容滚动效果的插件大多依赖于jquery,而且几乎都是全屏滚动,各块内容的大小一致(例如onepage-scroll。)。于是现学现卖做了一个插件,纯JS实现,且不限于全屏滚动。详见github仓库demo

我想在性能和用户体验上还有提升的空间,欢迎大家提出改进建议,谢谢!

主要特性

  • 支持滑轮、触摸、键盘操作。
  • 每块内容的高度可定制。
  • 允许动态增删内容

蚂蚁金服 网页支付SDK 为什么没有node版?!


我的swig引擎为什么渲染不了了?

用vue全家桶+koa2+soket.io +mysql写一个聊天应用

$
0
0

介绍

产品功能和页面参照qq,微信,TIM,不完全一样,有些是自己的想法。前后端都写。 感觉是一个挺不错的全栈入门项目,各种交互各种业务逻辑,对node(koa)和vue学习挺有帮助,现在开源出来,接下去将继续不断完善欢迎star

技术栈:

前端vue,vue-router,vuex ,vue-cli和axios,做了移动端适配,没有用第三方组件。 后端用koa2,用gulp构建工具实现自动刷新后端代码运行。 数据库用mysql,基于Token的jwt鉴权机制,用socket.io做双向通信;

线上地址

github地址

线上地址

建议打开手机模式

欢迎大家注册登录,加这个群聊天 搜群名称: 项目交流群

群聊

也可以加我为好友,用户名: hxvin

也可以注册两个账号在两个不同浏览器自己尬聊啦

项目展示 (部分)

github貌似没展示完全gif图 可直接戳链接查看

gif链接1

airchat1

gif链接2

airchat2

gif链接3

airchat3

image

进度

开始 -----------------2018.01.13

  • [x] 登录
  • [x] 注册
  • [x] 登出
  • [x] 弹窗,提示等组件
  • [x] 机器人智能聊天回复
  • [x] 私聊
  • [x] 群聊

-----------------2018.02.01

  • [x] 用户资料卡
  • [x] 加好友及验证好友请求
  • [x] 好友请求通知
  • [x] 删除好友
  • [x] 未读消息提示

-----------------2018.02.10

  • [x] 搜索用户,群组
  • [x] 创建群
  • [x] 群资料卡
  • [x] 加群
  • [x] 退群
  • [x] 修改备注

-----------------2018.02.11

  • [x] 发布到线上
  • [x] 修改个人信息

-----------------2018.03.02

  • [ ] 通讯录展示
  • [ ] 聊天发表情
  • [ ] 聊天发图片
  • [ ] 支持聊天代码美化,md语法
  • [ ] 用户上传头像
  • [ ] 性能优化,redis做缓存

下载到本地开发环境跑

本次开发我用了三个git分支,分别是主分支master ,开发分支dev , 线上分支online,如果你要fork到你的本地跑,请fork master分支 。

(注意下到本地后如果要体验soket.io通信互聊,用两个浏览器各打开一个账号,不能用同一个浏览器,因为我用localstorage缓存账户信息)

Fork 或者 下载本项目

然后进入本项目的文件夹,把airchat/server/init/sql 的 airchat.sql文件 拉到你的msyql客户端(我使用的是mac下的 Sequel Pro挺好用的)

npm i
npm run dev
cd server 
npm i

接着下面两条命令执行一条就行,看着选;(如果想要修改后端代码即时保存刷新,用第一条;如果像想用chrome进行debug调试,用第二条)

npm run start  
npm run dev

打包上线,让所有人都能用到你的产品(非必须)

打包上线前需要对master分支的代码做一些修改。具体怎么修改以及后续如何打包上线,请看我单独写的一篇文章airchat 打包上线小记,希望对你有帮助。

老习惯,代码注释比较详细,需要注释而没有注释的我也尽快补上; 后面也会写几篇博客来详细介绍本项目,希望更好的帮助到入门的小伙伴(大神请略过,或者给些指导建议)

如果对您有帮助,希望给个start,鼓励我继续更新^ ^

材料

自己总结的

web移动端适配方案

airchat 打包上线小记

token,Json web token(jwt)

web移动端页面怎么调试

本地mysql客户端连接centos的数据库

文章都在我的博客上,欢迎star我的博客

第三方的(在此感谢)

socket.io英文文档

socket.io中文文档

socket.io in github

socket.io-client in github

聊天机器人api

[深圳] 柴火创客公司招聘JS全栈开发工程师(偏前端) 3 名

$
0
0

我们正在开发一款基于scratch的图形化编程软件及用户社区,你能够接触到使用js对硬件进行编程、使用js开发桌面端应用程序、使用node+js的全栈开发面向创客、科技老师、5-12岁青少年的互联网社区项目。我们的项目中使用到的技术有js、html、css、es6&7、typescript、react、redux、ant-design、dva-cli、blockly、scratch3、electron、cordova、webpack、serialport、ble等技术,如果你全部都使用过或使用过其中的某一些,不论你是寻找的是实习生岗位、不论你工作年限,不论你想走技术or管理路线,只要你感兴趣,请将简历投递至louis.wang@chaihuo.org

关于公司信息,大家请自行百度或Google:“柴火创客空间”,“柴火创客”,“seeed”,“maker faire shenzhen”等关键字。 这是一家第一个把创客文化带入中国的公司,so,这家公司是以技术驱动,你会接触到许多开源硬件,和许多智能硬件设备,3d打印,激光切割,无人机,机器人。

基于 Nest.js(Node.js) + React 的模块化敏捷开发系统架构 Notadd 2.0 Beta2 发布

$
0
0

前言

大多数 node.js 框架都没解决架构问题,使得 node.js 没能像 spring 一样的适合大型项目开发和维护的框架。 nest.js 出现改变了这种现状。 我们基于 nest.js 开发了 Notadd ,更加解决了快速开发需求。

[开发快] 像搭积木一样快速满足自己的开发需求

[高性能] 单机并发轻松上万

[易维护] 类 spring 一般优秀的架构,便于维护和二次开发

更新内容

新增:

  • 拓展机制的支持
  • 支持 RPC 通信
  • 基于 npm 的应用升级机制
  • 多语言机制的支持
  • 完整的后端 json 表单生成机制

优化:

  • 升级 Material-ui 至 1.0 Beta35
  • 安装流程优化(支持创建后台用户名密码)
  • sqlite 不再要求输入数据库名 用户名等

修复:

  • 修复 yarn dev 无法运行的问题。
  • 修复 yarn install 安装时部分包由于 ts 版本导致的编译问题。

相关技术

  • Typescript
  • Node.js & Nest.js
  • React.js & material-ui
  • GraphQL API
  • Redis

特点

  • [x] 前后端完全分离,页面无刷新,大大降低后端负载
  • [x] 异步高性能应用,单机并发轻松上万
  • [ ] 支持 SSR 渲染,更好的 SEO
  • [x] 支持 React 动态表单生成
  • [x] GraphQL 接口,多次请求合并
  • [x] 基于 Typeorm 原生支持超过 6 种数据库
  • [x] 原生支持 Websocket 实时通信
  • [x] 原生支持 Grpc,可跨进程,跨语言,跨服务器通信
  • [ ] 支持 PWA 技术,实现断网提醒,断网表单保存,网页离线消息推送。

模块化设计

notadd

(配图是 PHP 版的,后续修改)

企业官网:CMS 模块 + Neditor 插件、留言板插件

信息发布:CMS 模块、用户模块 + CMS 多用户插件、Neditor 插件

微信商城: 用户模块、商城模块、微信模块 + 微信大转盘、支付插件、线下核验插件

餐饮方案: 用户模块、商城模块、微信模块 + 点餐插件、扫码支付插件、客流监测插件… + 红外传感拓展、WIFI 探针拓展

酒店方案: 用户模块、酒店模块、微信模块 + 预定插件、支付插件、智能 WIFI 插件 + WIFI 探针拓展、门卡系统拓展

CRM 系统: 用户模块、CRM 模块…

更多可畅想的…

CDN 方案

cdn

(配图是 PHP 版的,后续修改)

系统环境

支持系统:Linux / macOS / Windows 2008 及以上版本

Node.js 版本:≥8.0

数据库:PostgreSQL 9.4+/ MySQL 5.7+ / Oracle 12+ / MS SQL Server 2012+ / MariaDB 10.2.28+ / SQLite 3.9+

缓存:Redis 3.2+ (当前版本非必须)

2.0 后台的全平台支持 (手机、PC、平板)

现在,2.0 的后台管理完整支持了手机、PC、平板,后台操作更加随心所欲。

2.0 后台 json 生成表单

常用的表单都可以通过 json 生成,后端不需要再写 React 代码。

2.0 初步的多数据库支持

现在,在安装过程中可以选择数据库,并且输入相应的信息就能下载对应的驱动并且建立数据库连接。

快速开始

下载

git clone https://github.com/notadd/notadd.git --branch=next

码云高速下载:

git clone https://gitee.com/notadd/notadd.git  --branch=next

安装

执行 NPM 包安装,(如无yarn ,请先执行 npm i yarn -g

yarn install

自动创建数据库配置

yarn run:install

必须使用 yarn !!!必须使用 yarn !!!必须使用 yarn !!!

运行

yarn dev

更新月报

2018 年 3 月

2018 年 2 月

2018 年 1 月

2017 年 12 月

2017 年 11 月

2017 年 10 月

2017 年 9 月

2017 年 8 月

2017 年 7 月

下载地址

码云

github

一点说明

3月将发布 用户中心模块 和 CMS模块 ,4月/5月 后续还会有 商城模块、微信模块~

unexpected tocken

$
0
0

image.png如图所示,这是个偶现的问题,出现几率不高,是在页面返回上一页时出现在控制台的。 应该不是因为少了个尖括号的原因(检查了语法),也应该不是打包配置问题(不然应该是必现)。 不知道有木有遇到同样问题的大佬???求解。。

腾讯云拼团啦,快来和我拼个团吧!!!

es6中,const和let变量声明,对性能有区别吗?用const代替let?

$
0
0

es6中,const和let变量声明,对性能有区别吗?用const代替let(不需要改变的变量或者对象)是否合适


nodejs 和 go语言~,如何抉择呢

$
0
0

最近蛮多朋友知道我玩node后推荐我玩go,为什么,他们回答的也各执一词~费解,网上信息太杂,谢谢各位评论了

来自酷炫的 CNodeMD

egg中egg-grpc使用问题

$
0
0

egg-grpc已经引入插件到egg中,并在controller里写了关于grpc的相关处理, 但是外部客户端访问,仍旧显示连接失败。Error: 14 UNAVAILABLE: Connect Failed。 是我的egg中的grpc服务启动失败。请问,egg中 egg-grpc的逻辑代码,应该放置在哪里

超简单用egg.js mongodb实现的restful服务, 包含angular5, ng ant design 和react, ant design mobile做的前端

$
0
0

https://github.com/leegang2017/survey, 里面包括后台例子,前端现在有2个,一个是用angular5和ng ant design做的,另一个是react和ant design mobile做的, 大家如果喜欢就给个星,谢谢

很简单的4步就可以开发一个新的restful服务:

  1. 定义一个model,比如app/model/survey.js
  2. 在app/service里面新建一个对应的service surveys.js,并继承DaoService
  3. 在app/controller里面新建一个对应的controller surveys.js,并继承CommonController
  4. 在router.js里面加上下面2句路由,就成功了
 router.post(api + '/surveys/search', controller.surveys.index);
 router.resources('surveys', api + '/surveys', controller.surveys);

上面的操作默认提供了增删改查的restful接口

methodurl说明
GETapi/v1/surveys/:id根据id来查找资源
POSTapi/v1/surveys根据request body里的json数据来创建新的surveys
PUTapi/v1/surveys/:id更新指定id里的数据
DELETEapi/v1/surveys/:id删除指定id里的数据

POST api/v1/articles/search?page=:page&pageSize:pageSize 搜索数据,这个是约定的搜索方式,非常简单,不用写额外代码

{
 eqs: {name:'eq'},\\找出字段name为eq的数据
 likes: {name:'like'}\\找出字段name包含有like的数据
 ins: {status: ['NEW', 'END']}\\找出字段status是NEW或者END的数据
 times: {created: {start: 1511280000000, end: 1513699200000}}\\找出字段created在这个start和end时间段的数据
 sorts:{name:'asc'}\\按照字段name升序, asc是升序,desc是降序
}

Rize - 一个可以让你简单、优雅地使用 puppeteer 的 Node.js 库

$
0
0

目前 puppeteer 已经成为了非常流行的 Node.js 的库,被广泛用于爬虫或 UI 测试。

我也很欢喜 puppeteer 这个库。然而,puppeteer 的几乎所有的 API 都是异步的,它返回的是一个 Promise

这就导致整个代码有点啰嗦,下面是官方的例子:

const puppeteer = require('puppeteer')

void (async () => {
  const browser = await puppeteer.launch()
  const page = await browser.newPage()
  await page.goto('http://example.com')
  await page.screenshot({ path: 'example.png' })
  await browser.close()
})()

如您所见,一堆的 await关键字使得代码不太优雅。为了要使用 async/await,您必须将代码放入一个立即执行函数(IIFE)里。

为此,我受到了 Laravel Dusk 的启发,写了 Rize这个库。

上面的例子如果用 Rize 重写,将会是这个样子:

const Rize = require('rize')

const rize = new Rize()
rize
  .goto('http://example.com')
  .saveScreenshot('example.png')
  .end()

代码简单得多了。另外,链式的 API 调用也是代码变得优雅。

除了提供基本的操作(如页面导航、对 DOM 操作、与表单进行交互),Rize 这个库还提供了一些断言方法。

为什么呢?因为我们经常利用 puppeteer 来进行 UI 测试。而 Rize 提供了一系列的 assertions,使得 UI 测试变得简单、方便,E2E 测试同样没有问题。

例如,您可以断言当前页面的 URL:

const rize = new Rize()
rize.assertUrlIs('http://example.com')

又或者断言指定的文本是否存在于页面上:

const rize = new Rize()
rize.assertSee('Some text')

还可以为 DOM 断言:

const rize = new Rize()
rize.assertClassHas('div', 'my-class')

上面这个函数可以断言指定的元素上是否存在指定的类名。更多的 API 可以参考 Rize 的文档(链接在下方)。

Rize 库的 GitHub 仓库:https://github.com/g-plane/rize(欢迎 star)

Rize 库的文档教程:https://rize.js.org/

Rize 库所有的 API 参考:https://rize.js.org/api/classes/index.rize.html

npm install 的 lock 文件是什么情况?

$
0
0

全局安装模块的时候, 进度就卡在这里了. 这个 lock 是什么?

npm http fetch GET 304 https://registry.npmjs.org/is-buffer 161ms (from cache)
npm http fetch GET 304 https://registry.npmjs.org/batch 156ms (from cache)
npm http fetch GET 304 https://registry.npmjs.org/async-limiter 139ms (from cache)
npm verb correctMkdir /Users/chen/.npm/_locks correctMkdir not in flight; initializing
npm verb makeDirectory /Users/chen/.npm/_locks creation not in flight; initializing
npm verb lock using /Users/chen/.npm/_locks/staging-3a08f0df5026584d.lock for /usr/local/lib/node_modules/.staging
⸨            ░░░░░░⸩ ⠇ extract:lodash: sill extract qs@6.5.1

先换 yarn 把事情干了…

Viewing all 14821 articles
Browse latest View live