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

一种尝试: 用 matrix 来定义项目的 ACL

$
0
0

因为最近做的项目需要对一些资源做简单的权限管理。老项目用的是 node_acl。功能比较全,但是对于简单的 acl 也需要连数据库。于是就在想可不可以把 ACL 搞的简单一点。

对于简单的 ACL,表达的是 role是否被 allow对一个 resource做某个操作。

这其实可以使用一个三维矩阵来: 行代表 role列代表 resource第三维代表权限。

于是做了这个小库: acl-matrix

下面复制了下 readme, 欢迎讨论

Usage

  1. Install
npm install acl-matrix
  1. Require it
const AclMatrix = require('acl-matrix');

const roles = ['admin', 'member', 'guest'];
const resources = ['blog', 'comment'];
const allows = ['get', 'add', 'update', 'delete'];

// Each element in matrix stores the permissions of a role to a resource.
const matrix = [
    //   admin        member         guest
    [[1, 1, 1, 1], [1, 0, 1, 1], [1, 0, 0, 0]], // blog
    [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 0]], // comment
];

const acl = new AclMatrix(roles, resources, allows, matrix);

// 0
acl.isAllowed('member', 'blog', 'add');

// 1
acl.isAllowed('member', 'blog', 'get');

Concepts

  • roles are the types of user trying to access resources
  • allows describes the oprations user will need to do
  • matrix describes the allows relation between roles and resources;
  • third dimension of the matrix is an array of 0 and 1s, the length of array should equal to allows's. This array describes the permissions.

For example: in the above sample code, matrix[0][2] ([1, 0, 0, 0]) means the guest role is able to 'get' the 'blog' resource, but not others.

Parameter limits

  • Row number of matrix should eauql to resources length;
  • Collum number of matrix should eauql to role length;
  • Element number of matrix should eauql to allows length;

Pros and Cons

Pros

node_acl is good, but it acquires database to store the acls. And it is relatively hard to mantain and update acl using node_acl.

Benefits of using acl-matrix:

  1. Three dimensional matrix is the simplest way to store acl;
  2. Simple to config and simple for future change;
  3. No dependency, acl matrix can be easily shared between frontend and backend;
  4. Performance: no database needed, checking permissions is justing reading elemet in array

Cons

  1. By using node_acl you are able to save relations between users and roles. You will need to store the role of the user youself using acl-matrix
  2. By default, permissions of each roles are fixed, which is suitable for most projects. But if you want to allow user define the acl, you will need to store multiple acl matrices

TODOs

Add more method for the class maybe?


我是如何 10 分钟入门接口自动化测试的

$
0
0

本篇教程主要使用node.js的json-mock,got库分别作为mock sever和模拟网络请求,基础框架使用cucumber.js,(cucumber是BDD行为驱动测试框架,可以用自然语言来编写测试),开发工具使用CukeTest

先上效果图

定义测试用例

image.png

测试报告

image.png

以下为具体实现

环境准备

操作步骤

1.安装客户端

下载CukeTest,node.js, node.js使用最新版或者稳定版都可以。
安装完成后,打开命令行 输入node --versionnpm --version可以看到具体版本即可,例如我本机安装版本为:

> node --version
v8.9.4

> npm --version
5.6.0
2.api自动化准备

打开CukeTest,弹出全局设置选项,选择默认选项
image.png

自动打开CukeTest客户端欢迎界面,在欢迎界面–学习-教学样例中点击api_service,弹出保存文件路径对话框,选择一个路径即可。

3.文件结构简介

打开之后,映入我们眼前的是一个feature文件,与cucumber的feature文件类似,这里定义了我们的测试步骤,通过查阅测试步骤,可以很方便的看到我们的测试内容,如同查看测试用例一般。在每个操作步骤后面都有一个绿色的按钮,表示这一步我们有代码实现,点击绿色按钮,自动化跳转到我们定义代码的地方。

左边栏是我们的项目文件目录。我们将测试用例文件都以.feature结构形式定义在features目录下,将实现操作步骤的代码定义在step_definitions目录下 。 support目录定义一些项目运行的全局设置,比如说设置超时时间。

4.mock接口服务器

接口自动化测试的简单总结就是: 模拟发送请求–拿到服务器响应的结果–结果对比–生成测试报告。 自动化之前,我们首先要有个被测服务器,我们这次使用的是json-mock开源工具,在package.json文件中已经自动帮我们定义好了。我们只需要点击更新依赖包配置按钮。 image.png弹出包依赖管理器。 点击下载即可下载。

同时,如果我们需要其它第三方包,也可以通过在 添加/删除栏进行管理
image.png如果由于某些包下载不下来(有些包是在国外服务器托管)。我们可以使用cnpm 下载。 cnpm的安装方式请参考(https://npm.taobao.org/)使用cnpm 安装依赖包的方式也特别简单。 在package.json文件上`鼠标右键–在命令行模式下打开 image.png

直接在打开的命令下执行 cnpm install安装成功后会有如下提示。

> cnpm install
√ Installed 2 packages
√ Linked 150 latest versions
√ Run 0 scripts
deprecate json-mock@0.1.0 › node-uuid@^1.4.2 Use uuid module instead
deprecate json-mock@0.1.0 › update-notifier@0.2.2 › configstore@0.3.2 › graceful-fs@^3.0.1 please upgrade to graceful-fs 4 for compati
bility with current and future versions of Node.js
Recently updated (since 2018-01-30): 2 packages (detail see file C:\Users\zengyang\Desktop\api_service\node_modules\.recently_updates.
txt)
√ All packages installed (169 packages installed from npm registry, used 18s, speed 83.78kB/s, json 152(1.44MB), tarball 0B)

启动server安装好依赖后在命令行直接运行node_modules\.bin\json-mock data.json

> node_modules\.bin\json-mock data.json
{^_^} Hi!

Loading database from data.json
  http://localhost:3000/users
  http://localhost:3000/posts
  http://localhost:3000/comments

You can now go to http://localhost:3000/

Enter `s` at any time to create a snapshot of the db

打开浏览器 输入 网址 http://localhost:3000/users就可以看到我们的api mock服务器已经成功启动了。

5.运行自动化代码并生成测试报告

在CukeTest客户端点击运行项目按钮, image.png运行完成后,自动生成测试报告。(如上一开始给大家看的效果图)

需要注意的是,在测试报告中支持直接邮件发送,但是发送的前提是你在本地已经配置好outlook客户端。如果你没有配置,你可以选择将测试报告导出。 image.png

5.代码解析

在feature文件中点击 操作步骤后面的绿色按钮定位到代码实现部分。代码主要使用 got (https://www.npmjs.com/package/got) 进行模拟网络请求。以get方法为例

var got = require('got');
var assert = require('assert');

var jsonFormat = {
    headers: { 'Content-Type': 'application/json' },
    json: true
};

got.get(url, jsonFormat).then(function (result) {
        var data = result.body;
        var assertdata = JSON.parse(expectval);
        return assert.deepEqual(data, assertdata);
    });

url: 即我们在feature文件中定义的请求路径 jsonFormat: get请求头信息, result:即服务器响应结果, assert: 对结果进行断言。

6.根据样例学习-自我发展

切换到feature界面,鼠标移动到例子我们可以更改我们的测试数据,提供了导出,导入功能,我们可以将测试数据导出到csv文件,也可以将数据从csv文件中导入到CukeTest,帮我们自动执行。

编写一个新的用例,在feature图形界面中 ,点击添加新场景双击"<场景名称>"进行编辑,数输入"comments接口测试" 操作步骤中双击 进入编辑界面,输入发送Post请求 "<URL>" 请求数据为 '<data>'服务器应该返回结果 '<expectval>'' (注意:符号应该为英文字符) 将其它两个步骤删掉,

将场景-更改为–场景大纲 (点击场景前面的 icon或者鼠标右键) image.png

添加测试数据,在例子中更改模板数据,如图 image.png

7.测试

点击测试后面的运行按钮,即可对单个场景运行,(单个场景以及单个剧本运行不会产生测试报告),在输出中可以看到运行结果。 image.png

[请教]TypeScript如何给EventEmitter重新声明类型?

$
0
0

问题描述

目前我在使用Electron框架开发桌面应用,尝试使用Typescript在调用ipc模块时,希望对他的参数进行限定(定义),但不知道该如何使用Typescript进行限定

期望效果

将其Listener参数限定为指定的字符串,类似type Str = 'time' | 'date' | 'length'的效果

尝试过程

尝试以下方式进行重新声明,均无效果

import {ipcMain} from 'electron';

// 接口定义,IpcMain大写开头
interface IpcMain {
  on(channel: 'abc' | 'bbc', listener: Function): this;
}
// 接口定义,ipcMain小写开头
interface ipcMain {
  on(channel: 'abc' | 'bbc', listener: Function): this;
}
// 模块声明
declare module 'electron' {
  interface IpcMain  {
    on(channel: 'abc' | 'bbc', listener: Function): this;
  }
}


// 实际代码,希望控制第一个参数的类型限定为指定字符串
ipcMain.on('message', (event: Electron.Event, arg:any) => {
      console.log(arg);
    });

感谢各位的阅读与查看

express 开发启动慢的问题

$
0
0

我用nodejs express开发 依赖包应该有20个左右吧, 然后用nodemon 保存文件自动重启,然后每次都得等10多秒;才能启动成功,求解决方案,大佬们 480x762timg.png

typescript福音 | tyty,一键下载所有项目依赖的 @types/* 类型声明文件的CLI工具

$
0
0

在 typescript 项目的实践中,总是要为新添加模块下载类型声明。当依赖变多,重复输入 npm install @types/xxxx是不是很烦呢,一点都不极客

tyty是一个命令行工具,只需在命令行的项目路径下输入 tyty,就会自动下载项目依赖对应的类型声明。

image.png

下载

npm install tyty -g

[文档/github] (https://github.com/Bin-Huang/tyty)

【杭州】支付宝招聘前端

$
0
0

个人发展路径

介绍团队之前,先介绍团队能支撑你成为怎么样的人:)

image.png

为什么我们能支撑你成为这样的人

  1. 这里是核心团队,所属为蚂蚁金服支付宝事业群团队,阿里系中的重要业务区块中的核心前端团队
  2. 丰富的业务场景支撑,社交、支付、会员、行业等各类型大体量业务,你做的每个产品必能收到用户回响
  3. 技术场景丰富,各业务形态支撑起丰富的技术栈实践机会,这里有Hybrid尖端实践,百万级、亿万级的业务考验
  4. 团队人才汇聚,百号前端团队,在这里你有丰富的交流机会,随时可展开畅所欲言的技术讨论

团队福利

  1. 团队分享会,星云汇聚
  2. 定期出游+组内不定期各类活动
  3. 共同学习进步的氛围,你入职后,可以获赠一本感兴趣的书籍,一起来参与协作翻译 or 其它
  4. 师兄护航,会配备经验丰富的师兄帮助Landing
  5. 十三薪、商保、带薪年假等公司统一福利
  6. 单身同学必须是团队负责帮忙一起找对象!!(哈哈,团队目前有2位妹子,但不单身,好处是,身边妹子资源丰富)

附一张近期的团队出游(2017.11) image.png

我们的JD

负责支付宝移动端H5应用与运营、PC门户及平台的前端开发,覆盖会员、支付、商家、开放、行业、社区等全部业务场景。在这里,你将与最优秀的小伙伴们一起: 1,做国民应用,服务亿级用户,连接千万商家,迎接最大受众规模、最复杂场景、最高质量要求的挑战 2,沉淀组件、抽象框架、建造工具,持续发展技术体系并完善研发平台,享受幸福的工程师生活 3,探索技术极限,拓展能力边界,共创极客文化,给世界带来微小而美好的改变

职位投递:leijun.wulj@alipay.com

职位描述 1,良好的计算机基础和编程能力,精通HTML/CSS/JavaScript,理解HTTP及相关协议,熟悉浏览器和移动平台特性,了解行业技术发展 2,两年以上前端相关工作经验,主导或独立负责过一定规模产品前端,前端技术有专研领域,掌握至少一种非前端开发语言并实际完成项目 3,有优质技术产品或开源贡献者优先;有前端架构、性能优化、Hybrid研发、iOS/Android应用开发经验可作为加分项 4,充分的产品意识、数据意识,善于规划执行、协调沟通,结果导向 5,优秀的学习能力,积极乐观,敢于担当,勇于创新

基于 Nest.js (nodejs 版的 spring ) 的 Notadd 2.0 Beta1 发布

$
0
0

前言

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

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

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

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

相关技术

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

特点

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

模块化设计

notadd

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

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

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

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

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

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

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

更多可畅想的…

CDN 方案

cdn

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

系统环境

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

Node.js 版本:≥7.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

码云高速下载:

git clone https://gitee.com/notadd/notadd.git

安装

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

yarn install

自动创建数据库配置

yarn run:install

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

运行

yarn dev

更新月报

2018 年 1 月

2017 年 12 月

2017 年 11 月

2017 年 10 月

2017 年 9 月

2017 年 8 月

2017 年 7 月

下载地址

码云

github

在windows系统中,安装node-canvas出现问题,请大神指点。

$
0
0

根据官方文档和其他人的博客教程,配置了c++ ,python, node-gyp 和 gtk,仍然无法正常安装node-canvas!!!

下图是执行npm install canvas时的运行情况 微信图片_20180207102747.png

下图是c++安装情况: ![微信图片_20180207103408.png](//dn-cnode.qbox.me/FmW8BH5mmJaP4NMXs9GOAe9gci8X

下图是python的情况: sssss.png

下图是gtk安装位置,已配置环境变量: gtk.png

下图是node-gyp的安装情况: gyp.png


http端口代理

$
0
0

我的node服务是绑定在8080端口 对外服务的时候访问并没有通过端口号8080 也就是直接的主机 按理说这样默认是80端口 这样是怎么代理到我的服务的呢

个人博客系统悌Nuxt,Vue,Element-ui,Express

$
0
0

个人博客系统

分为三部分:

  1. 前台: 博客页面
  2. 后台: 博客管理页面
  3. 后台: 博客后台服务器

项目简介

项目已前后端分离开发。分别用到的框架如下:


项目预览图

1.png2.png3.png4.png11.png


项目可能还有很多不足,水平有限。。T_T ,但如果对各位有些许帮助,或者觉得还可以的,请给予小弟一些支持,您的支持是我的动力,或者给小弟一些建议,最好给个star。十分感谢

大家都发年终奖了吧,给大家心里种点草,不然怕大家没地方花

$
0
0

大家年终奖都发了吧。 和大家安利一个我最近开发的网站 www.boxopened.com,网站专注于产品的开箱,用户体验分享。 网站是基于eggjs做的,最近正在进行重构,准备将前后端进行react的同构化改造,graphql接口改造,微服务框架从seneca切换到moleculer。 设计端也启用了全新的材料设计风格,估计年后上线。 到时候再和大家分享下重构的过程,哈。

21 岁的你在做什么? 25 岁的我在哭

$
0
0

不知道有没有人听说过小问,做前端的可能有一部分人知道。

我只知道小问写过《深入 ES2015 》这本书,知乎开过 live。

今天参加掘金的 [AMA 活动]( https://juejin.im/post/5a741b0e6fb9a063417aff3f

才知道他已经在负责七牛云的架构和算法研发了。关键是架构…好像前端最后能做架构的不多。

更没想到,他居然才 21 岁,还在上大学…

人比人真是气死人啊…21 岁的我好像每天只知道 LOL。

不过现在努力也不晚

各位 21 岁都在干嘛…25 岁呢?

bf44f8cf27838fb9a88ada7fe31c182d求助

$
0
0

bf44f8cf27838fb9a88ada7fe31c182d提示这个乱码是什么原因??急急急!

React 16.3快要发布了,新的context API有望替代redux?

$
0
0

AV(}EZ[~3SZ2MZZ04]D8%4B.png目前可以试用alpha版本,正式版会在近期发布

{
  "dependencies": {
    "react": "^16.3.0-alpha.0",
    "react-dom": "^16.3.0-alpha.0"
  }
}

新的context

context这个特性已经存在很久了,但因为一些原因一直是处于试验性质的API。 Y`FREBA{_39OOL4_LT)HNX6.png React 16.3带来了正式版的context API

  • createContext创建一个context,context里有ProviderConsumer两个组件
import React, { createContext } from 'react';

const ctx = createContext({
  text: 'hello world!',
});
const { Provider, Consumer } = ctx;

Provider组件用于将context数据传给该组件树下的所有组件 value属性是context的内容

class App extends React.Component {
  render() {
    return (
      <Provider value={{ text: 'hello react!' }}>
        <Comp1 />
        <Comp2 />
      </Provider>
    );
  }
}

要使用context的数据,我们需要使用Consumer组件

// 函数式
const Comp1 = () => (
  <Consumer>
    {context => <p>{context.text}</p>}
  </Consumer>
);
// 类
class Comp2 extends React.Component {
  render() {
    return (
      <Consumer>
        {context => <p>{context.text}</p>}
      </Consumer>
    );
  }
}

可以发现Consumer使用了将一个函数作为它的children的新语法,从上面的例子中可以看出它接收context并将context.text渲染出来
Consumer下不能写其它的东西,比如<Consumer>text: {context => <p>{context.text}</p>}</Consumer>
另外,在新的context API下,我们不需要写contextProps就能使用context了

等等,既然context的内容是写在Provider的value中,那我们创建context时的参数呢?如果你没有将Consumer作为Provider的子组件,那么Consumer将使用创建context时的参数作为context

新的context提供了一个简洁的管理全局状态的方式,或许可以替代Redux之类的状态管理库?

生命周期相关改动

为了支持未来的异步渲染特性,以下生命周期函数将被废弃

  • componentWillMount请使用 componentDidMount代替
  • componentWillUpdate请使用 componentDidUpdate代替
  • componentWillReceiveProps请使用新增的 static getDerivedStateFromProps代替
    废弃警告会在React 16.4开启,废弃的函数预计在React 17.0移除

static getDerivedStateFromProps

作为被废弃的componentWillReceiveProps的替代,React提供了一个新的函数static getDerivedStateFromProps(nextProps, prevState)
注意前面的static,这意味着在这个函数中我们不能使用this, 该函数的返回值将用于更新state。如果不需要更新state,就返回null

static getDerivedStateFromProps(nextProps, prevState) {
  if (nextProps.text === prevState.text) return null;
  return { text: nextProps.text }; // 相当于setState({ text: nextProps.text });
}

严格模式和异步模式

import React, { StrictMode } from 'react';
// ...
<StrictMode>
  // ...
</StrictMode>

当你在严格模式下使用了不建议的函数,你会得到一个警告信息 image.png同样的unsafe_AsyncMode现在暂时没有用,用于未来的异步渲染

如何用 ras 私钥 解密一个 java 用公钥加密后的16进制字符串??

$
0
0

untitled1.png

untitled1.png

加密出来的 byte[] 然后 HexToString 转成了字符串,NodeJs 如何用私钥解密出来~ 。求一段代码


烦躁。我又打不开egg网址了

【杭州滨江】阿里巴巴 B2B 招 前端 / Node.js 专家 (P6/P7) 20-40k

$
0
0

坐标:杭州阿里巴巴滨江园区
薪酬:20k - 40k,大部分人都能拿到 16 薪
简历发送至:haoqun.jhq@alibaba-inc.com,请备注来自 CNode 社区


工作内容

  1. 负责网站应用前端开发,与后台工程师协作,完成数据交互、动态信息展现;
  2. 使用 JS 编写封装良好的前端交互组件,维护及优化网站前端页面性能;
  3. 研究和探索创新的开发思路和最新的前端技术;
  4. 参与新人培训和前端技术布道。

岗位要求

  • 大学本科学历,至少需 2 年以上开发经验,能熟练使用常见类库或框架,编写高质量的前端代码;
  • 熟练掌握 React、Redux 及相关框架和技术,有单页面应用开发经验;
  • 精通 ES6,Gulp,webpack 等规范和技术;
  • 熟悉 Node.js ,有 Node.js 开发经验,熟悉 Express / Koa 等框架;
  • 善于 Web 性能优化与前端效果的实现;
  • 良好的团队合作精神和积极主动的沟通意识,具有很强的学习能力和对新技术的追求精神,乐于分享;
  • 有大型网站开发经验者优先。

当然,只要能力过硬,能通过面试,以上都不是硬性要求。

职位福利

  • 法律规定的福利我们都有,包括最高标准五险一金外加商业医疗保险;
  • 上下班班车;
  • 异地入职搬迁补贴;
  • 加班调休;
  • 楼下星巴克员工 9 折;
  • MacBook Pro 15-inch + 大屏显示器。

关于团队技术栈

我们还是集团首批同构方案的实践者,在工程领域,我们率先引进了自动更新、独立安装包、BPMN 流程引擎、GraphQL 等技术方案,实践了全面 WebUI 化的开发模式、线上线下整合的工作流,更有超越 webpack 的极速构建器……

作为工程和业务交叉的团队,在这里,既有机会实践最新的前端工程体系和技术方案,更能直接参与到这些基础设施的设计和开发中。

在这里,限制你的不会是技术栈,不会是上升空间,不会是繁杂无趣的重复劳动;限制你的,只有你的创新能力和想象力。

Joel 的团队衡量法则

  • 你们用源文件管理系统吗? ✓
  • 你们可以把整个系统从源码到上线一步建成吗?✓
  • 你们每天都把从系统源码到上线做一遍吗?没有
  • 你们有软件 bug 管理系统吗? ✓
  • 你们在写新程序之前总是把现有程序里已知的 bug 解决吗? 一般是
  • 你们的产品开发日程安排是否反映最新的开发进展情况?✓
  • 你们有没有软件开发的详细说明书?✓
  • 你们的程序员是否工作在安静的环境里?说实话,有点吵,开放环境
  • 你们是否使用现有市场上能买到的最好的工具?✓
  • 你们有没有专职的软件测试人员?✓
  • 你们招人面试时是否让写一段程序?✓
  • 你们是否能通过『走廊测试』?没试过

初尝 Nuxt.js 使用 CNode 的API 弄了个简单的 demo 。

$
0
0

GitHub

Live Demo

首页的列表不居中是因为,右边还没想好加什么东西上去。

WechatIMG146.jpeg

因为只是个小 demo,所以没有加上过场动画。但是简单的做了头部的 seo。 WX20180208-102236@2x.png

用户界面: image.png

css 直接用 mini.css可能有点不太美观。

还在摸索着如何加上过场动画,vuex,登录的问题。

[杭州][阿里巴巴][资深前端开发(P6/P7)]可能是阿里技术氛围最好的前端团队!!

$
0
0

职 位: 阿里巴巴安全部 前端工程师 ( P6:1-3 年经验 /P7:5 年以上经验)

工作职责: 根据设计人员制作的效果图,完成网站前端代码的开发(HTML、CSS、JS); 根据具体业务场景设计并实现前端基础架构; 参与开发各类开源库和工具; 数据可视化业务开发;

职位要求: 熟练掌握 html5,css3,javascript 等前端技术; 熟悉 jQuery,react,angularjs,bootstrap 等常用前段框架; 理解最新 Web 标准,理解 ES6/ES7,熟练掌握 gulp, npm, webpack 等各类开发工具; 热爱技术,具备良好的职业素养和团队协作精神;

加分项: 熟悉任何一门后端语言经验 (JAVA/C++/C#/Python/PHP); 有数据可视化方面开发经验; 自己的独立高质量开源项目; 对 UI/UX 有深入的理解;

感兴趣的小伙伴们请发送简历至 daiqing.daiqing@alibaba-inc.com

【求助】用ramda实现add(1,2,3)=add(1)(2)(3),求助;

$
0
0

untitled1.png这样写 我这参数固定了个数。。 假如我想curryAdd(2)(3)(4)(4)(55),这里参数我并不知道可能有多少个? 求助 应该怎么实现

Viewing all 14821 articles
Browse latest View live