nodejs 代码加密代码如何提高复用性和可读性

AMD CMD - 简书
AMD 是 RequireJS 在推广过程中对模块定义的规范化产出。
CMD 是 SeaJS 在推广过程中对模块定义的规范化产出。
CommonJS 是 服务器端模块的规范,Node.js采用了这个规范
Paste_Image.png
对于依赖的模块,AMD 是提前执行,CMD 是延迟执行。
AMD:提前执行(异步加载:依赖先执行)+延迟执行
CMD:延迟执行(运行到需加载,根据顺序执行)
CMD 推崇依赖就近,AMD 推崇依赖前置。看代码
define(function(require, exports, module) {
var a = require('./a')
a.doSomething()
// 此处略去 100 行
var b = require('./b') // 依赖可以就近书写
b.doSomething()
// AMD 默认推荐的是
define(['./a', './b'], function(a, b) { // 依赖必须一开始就写好
a.doSomething()
// 此处略去 100 行
b.doSomething()
虽然 AMD 也支持 CMD 的写法,同时还支持将 require 作为依
赖项传递,但 RequireJS 的作者默认是最喜欢上面的写法,也
是官方文档里默认的模块定义写法。
3.AMD 的 API 默认是一个当多个用,CMD 的 API 严格区分,推崇职责单一。比如 AMD 里,require 分全局 require 和局部 require,都叫 require。CMD 里,没有全局 require,而是根据模块系统的完备性,提供 seajs.use 来实现模块系统的加载启动。CMD 里,每个 API 都简单纯粹。
var i = 1;
var max = 30;
module.exports = function () {
for (i -= 1; i++ & ) {
console.log(i);
max *= 1.1;
module.exports对象,定义了一个函数,该函数就是模块外部与内部通信的桥梁。
加载模块使用require方法,该方法读取一个文件并执行,最后返回文件内部的module.exports对象。
兼容三者的方案
有人试图实现兼容。也就是自己的代码既能在node上运行,也能在符合amd规范的代码环境中运行。于是产生了umd,其实umd并不算规范,而只能算一种兼容方案,它可以兼容CommonJS和AMD。
兼容amd和cmd
if(typeof define == 'function' && (define.amd != undefined || define.cmd != undefined) {
define(function() {
return fun();
在requirejs中,一个模块可以如此去定义:
define({});
define(factory);
define(id,dependencies,factor);
define(dependencies,factor)
在seajs中也差不多,但是也有不同之处:
define({});
define(factory);
define(id,dependencies,factory);
define(id,factory);
前面三种都是一样的,但是细节上也有所不同,第一种以对象的方式定义并不能解决我们插件中接口传递的目的,因此不考虑。剩下的就只有两种相同的形式,但是就像前文说到的一样,OMD是为了实现兼容,也就是说它必须作为框架被应用,框架的基础代码具有稳定性,不能让用户改来改去,否则也就失去了规范的意义。而在剩下的两种中,define(id,dependencies,factory)的前两个变量,都需要自己去定义,因此,也被排除。最终也就只有define(factory)这种形式被我们采用。
define(function(){
fun1 : function(a,b) {},
fun2 : function(c,d) {}
}; // return的结果为一个对象
兼容comomjs
当define没有被定义的时候,说明跟sea.js和require.js没有任何关系了,这个时候,我们要检查是否支持node.js。
如果是在node.js环境下运行,那么module和exports是一个由核心库提供的全局变量。因此,只需要将插件提供的接口赋值给module.exports,就完成了当前文件(模块)所提供的接口了。
兼容原生的javascript
当以上情况都不满足的情况下,实际上,你所提供的接口,就是一个函数。你提供了一个fun1的接口,你就可以在其他javascript代码中执行fun1()函数。
!!nodejs深入浅出代码
;(function (name, definition) {
// 检测上下文环境是否为AMD或CMD
var hasDefine = typeof define === 'function',
// 检查上下文环境是否为Node
hasExports = typeof module !== 'undefined' && module.
if (hasDefine) {
// AMD环境或CMD环境
define(definition);
} else if (hasExports) {
// 定义为普通Node模块
module.exports = definition();
// 将模块的执行结果挂在window变量中,在浏览器中this指向window对象
this[name] = definition();
})('hello', function () {
var hello = function () {};
随着前端业务复杂度的增加,模块化成为一个大的趋势。而在ES6还未被浏览器所支持的情况下,commonjs作为ES6中标准模块加载方案,在客服端中的支持情况并不好,现在在客服端中有2中模块化的解决方案,CMD和AMD,他们的代表分别为seajs和requirejs。这篇文章主...
为什么要使用模块化? 最主要的目的:解决命名冲突依赖管理 其他价值提高代码可读性代码解耦,提高复用性 CMD、AMD、CommonJS 规范分别指什么?有哪些应用 这三个规范都是为javascript模块化加载而生的,都是在用到或者预计要用到某些模块时候加载该模块,使得大量...
什么是模块化? 简单理解:将各个功能封装为独立的模块,当需要某个功能时,只需要加载相应的模块即可 为什么出现模块化? 随着技术的发展,web应用的代码日益增大,由于JavaScript的语言特性(在ES5之前js并没有像java一样拥有类和模块的语言等特性),导致其无法驾驭...
为什么要使用模块化? 什么是模块化:一个模块就是实现特定功能的文件,有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块。模块开发需要遵循一定的规范,否则就都乱套了。 模块化的目的:解决命名冲突依赖管理提高代码可读性代码解耦,提高复用性 2.CM...
我的Github(https://github.com/tonyzheng1990/tonyzheng1990.github.io/issues),欢迎star 今天由于项目中引入的echarts的文件太大,requirejs经常加载超时,不得不分开来加载echarts的各...
水管铺设工程是水电阶段工程里最基础的工程。如果水管铺设的不好,就会影响一个家日后的用水状况,甚至到时候问题出来,维修也特别麻烦。因此在水管验收阶段如果没有验收合格就进入下一项工序,很可能会留下安全隐患。因此针对以下常见的水管铺设问题来给大家简单介绍一个水管验收技巧。 一、做...
获取label可以使用资源的反射,直接取app_name的值,但也有一个简单的方法: 通过获取Application info获取label的值
CanvasRanderingContext2D接口用来在canvas元素上绘制矩形,文本,图片或其他对象。它为在 元素表面上绘图提供了2D渲染上下文 调用 元素的getContext()方法,加入&2d&作为参数可以获得这个接口的实例。 Rect clearRect(x,...
有时候,我真的很讨厌自己。 说到做不到,爱说。 想到做不到,爱想。 看到做不到,爱看。 …… 下定点决心吧 写东西,坚持几天就不写了 签到,签了几天就不签了 复习,复习几天就开始找借口不复习了 我还能做什么? 致自己 如果想要得到自己想要的一切 从现在开始 可以开始有所行动...
遇到哭的孩子怎么办?我选择让他继续哭,并告诉他可以去办公室里面哭。 因为我想让他感觉到,我作为老师,也是站在他这一边的。 这个孩子上课十分调皮,甚至可以用闹翻天来形容。这次哭是因为被奶奶打了狠手,而奶奶打他的原因,是因为他脱女孩子的裤子。男女性别意识并不强烈,若是看到女生下...该项目未开启捐赠功能,可发送私信通知作者开启
与超过 300 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
已有帐号?
WebUI4Angular是基于angularjs实现的一套UI组件,主要包括:datagrid,tree,dialog,progress,tilelist,tabset,dividedbox,imageview等等。组件需要使用angularjs1.3以上版本,其中拍照组件cameraScanner另需安装flash player。
整套组件借鉴了UI Bootstrap等开源组件的写法,主要对指令进行了自己的封装,我们希望通过angular的指令编写一套类似flex的声明式UI组件,使得页面代码更加简洁,可读性更强,复用性更好。
develop_topwin
由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...

WebUI4Angular
a set of components with angularjs, which includes Datagrid,tree,dialog,progress,tilelist,tabset,dividedbox,imageview and so on.
参照了UI Bootstrap等组件的写法,主要对指令进行了自己的封装,我们希望通过angular的指令编写一套类似flex的声明式UI组件,使得页面代码更加简洁,可读性更强。
#Quickstart


GitHub 项目地址: 



oschina 项目地址: 


#Setup & Install
1.安装好nodejs环境(略~)
2.需要全局安装的内容:
npm install -g gulp
npm install -g grunt-cli
npm install -g karma
npm install -g grunt
3.项目依赖:
npm install
如果不想安装,也可以直接将node_modules.zip解压至项目根目录。
#gulp task说明
运行构建:gulp build
构建清理:gulp clean
运行测试:gulp test
生成文档:gulp doc
(生成的文档路径为:build/docs,需要放在服务器上才能查看)
#其他
使用npm安装依赖的时候会很慢,有些包甚至根本下不下来,这里推荐使用淘宝的npm镜像
npm install -g cnpm --registry=
以后使用cnpm就可以了.
正在加载...岗位职责:1、负责产品前端页面(手机网页、PC网页)的开发和优化;2、负责现有产品及新产品的开发工作;优化现有APP程序的结构;2、参与H5、Node、js相关的业务开发及维护工作;3、参与公司前端框架的设计、开发和实现;4、参与公司前端业务的工程化、流程化、性能优化工作并持续推进。任职条件:1、计算机相关专业,大专及以上学历;2、二年以上开发经验,熟悉与app的混合开发;3、熟悉html、css、javascript等Web基础;熟练使用Photoshop,精通JS语言,熟练使用JS完成各种效果,了解AJAX技术至少掌握一种以上js框架(JQuery、Prototype、YUI、Mootools、Reactjs、Angularjs等),并有实际的使用经验;4、熟悉常见Web框架原理,熟悉前端的MVC、MVP、MVVM等思想,熟练使用Vue2框架,了解Angular、React等前端主流MVC/MVVM框架;5、熟悉Web性能优化、浏览器内核、浏览器渲染引擎、网络安全等相关知识;6、了解AMD/CMD规范,了解grunt/gulp/webpack等前端自动化构建工具;7、至少了解一门后台语言(如nodejs、Java、PHP);8、优秀的代码编写能力。思路清晰、分层明确,良好的数据结构以及API设计能力,代码可读性强、复用性高;9、性格开朗,积极主动,乐观豁达,有良好的解决问题的思路
在招聘、录用期间要求你支付费用的行为都必须提高警惕。以招聘为名的培训、招生,许诺推荐其他工作机会,甚至提供培训贷款,或者支付体检、服装、押金和培训等费用后才能录用工作的,都属于违法行为,应当提高警惕。一经发现,请,并向当地公安机关报案。
简历匹配度
申请该职位
热门职位热门城市周边城市
无忧工作网版权所有(C)51job.com(沪ICP备)关于Nodejs中最关键也是最难的异步编程做一些介绍和讲解
python语法简单易上手,又有大量的库的支持,在工具脚本这格领域体现了它的价值,地位不可动摇。我本来是也是使用python编写一些脚本的,但由于一些巧合、契机,我接触到了Nodejs,基于一些个人原因,我更倾向使用Nodejs来编写平时使用的工具脚本,包括数据采集入库之类,但由于js这个语言本身的一些特性,使得Nodejs作为脚本来开发的话难度曲线相对陡峭,这篇文章我就关于Nodejs中最关键也是最难的异步编程做一些介绍和讲解
$这篇文章面向的读者绝对不是对Nodejs完全没用过的同学,读者需要对Nodejs有简单的了解$
Nodejs的异步
Nodejs本身是单线程的,底层核心库是Google开发的V8引擎,而主要负责实现Nodejs的异步功能的是一个叫做libuv的开源库,github上可以找到它。
先看几行python代码
file_obj = open('./test.txt')
print(file_obj.read())
这行代码逻辑相当简单,打印根目录下一个名为test的txt文件内容
相同的操作用Nodejs写是这样:
const fs = require('fs')
fs.read('./test.txt',(err,doc)=&{
// throw an err
console.log(doc)
看起来相当的麻烦。
为什么要这样写?根本原因就是Node的特点,异步机制。关于异步机制的深入理解我可能会另写一篇文章
fs.read()本身是一个异步函数,所以返回值是异步的,必须在回调函数中捕获,所以得写成这个样子。
一两个异步操作可能还好,但如果相当多的异步操作需要串行执行,就会出现以下这种代码:
//callbackHell.js
fs.read('./test1.txt',(err,doc)=&{
//do something
let input = someFunc(doc)
fs.read('./test2.txt',(err,doc2)=&{
//do something
let input2 = someFunc2(doc2)
fs.write('./output.txt',input+input2,(err)=&{
// err capture
// some other async operations
连续的回调函数的嵌套,会使得代码变得冗长,易读性大幅度降低并且难以维护,这种情况也被称作回调地狱(calllback hell),为了解决这个问题,ES标准推出了一套异步编程解决方案
人们对于新事物的快速理解一般基于此新事物与生活中某种事物或者规律的的相似性,但这个promise并没有这种特点,在我看来,可以去类比promise这个概念的东西相当少,而且类比得相当勉强,但这也并不意味着promise难以理解。
promise本身是一个对象,但是可以看做是是一种工具,一种从未见过的工具,解决的是Nodejs异步接口串行执行导致的回调地狱问题,它本身对代码逻辑没有影响
废话少说,直接上代码:
function promisifyAsyncFunc(){
returnnewPromise((resolve,reject)=&{
fs.read('./test1.txt'.(err.doc)=&{
if(err)reject(err)
else resolve(doc)
promisifyAsyncFunc()
.then(res=&{
console.log(`read file success ${res}`)
.catch(rej=&{
console.log()
与之前的异步代码不同的是,我们在异步函数外层包了一层返回promise对象的函数,promise对象向自己包裹的函数里传入了两个函数参数resolve和reject,在异步函数内部通过调用resolve向外传递操作成功数据,调用reject向外传递错误信息。
关于promise对象使用的语法牵涉到es6的最新规范和函数式编程,这里不做详细介绍
接着我们调用这个函数,链式调用promise对象提供的接口函数.then(function(res){//TODO})将异步函数向外传递的值取出来,使用.catch()捕获内部传递的错误。
最基本的promise用法大致就是这样,但这样看依然没明白它如何避免了回调地狱,这里我们使用promise改写callbackHell.js文件
//promisifY.js
function promisifyAsyncFunc(){
returnnewPromise((resolve,reject)=&{
fs.read('./test1.txt'.(err.doc)=&{
if(err)reject(err)
else resolve(doc)
function promisifyAsyncFunc2(input){
returnnewPromise((resolve,reject)=&{
let output1 = someFunc(input)
fs.read('./test2.txt'.(err.doc)=&{
if(err)reject(err)
else resolve({
function promisifyAsyncFunc3({output1,doc}){
returnnewPromise((resolve,reject)=&{
let outpu2 = someFunc2(doc)
fs.write('./output.txt',output1+output2,(err)=&{
// err capture
// some other prmisify function
promisifyAsyncFunc()
.then(promisifyAsyncFunc2)
.then(promisifyAsyncFunc3)
代码这样写应该会看的比较清楚,我们把每个异步函数都封装在promise对象里面,然后通过promise的链式调用来传递数据,从而避免了回调地狱。
这样的代码可读性和维护性要好上不少,但很显然代码量增加了一些,就是每个函数的封装过程,但node里的util库中的promisify函数提供了将满足node回调规则的函数自动转换为promise对象的功能,若没有对异步操作的复杂订制,可以使用这个函数减少代码量
虽然promise相对于原生的回调来说已经是相当良好的编程体验,但对于追求完美的程序员来说,这依旧不够优美,于是es规范在演进的过程中又推出了新的异步编程方式
Generator并不是最终的异步解决方案,而是Promise向最终方案演进的中间产物,但是其中利用到的迭代器设计模式值得我们学习和参考。这里不对这种方法多做介绍,因为有了async,一般就不再使用Generator了。
async/await
Async/Await其实是Generator的语法糖,但是因为使用的时候使异步编程似乎完全变成了同步编程,体验异常的好,而且这是官方推出的最新规范,所以广受推崇,这里就对如何使用它进行一些介绍说明。
先看Async的语法,用起来真的是相当简单
async function main(){
const ret = await someAsynFunc();
const ret2 = await otherAsyncFunc(ret)
return someSyncFunc(ret,ret2)
定义一个函数,函数申明前加上一个async关键字,说明这个函数内部有需要同步执行的异步函数
此函数需要同步执行的异步函数必须返回的是promise对象,就是我们之前用promise包裹的那个形式
在需同步执行的异步函数调用表达式前加上await关键字,这时函数会同步执行并将promise对象resolve出来的数据传递给等号之前的变量
我们再使用async/await改写promisify.js文件
//async/await.js
const promisify = require('util').promisify &//引入promisify函数,简化promise代码
const read = promisify(fs.read)
const write = promisify(fs.write)
async function callAsyncSync(){
const res1 = await read('./test1.txt')
const res2 = await read('./test2.txt')
const output1 = someFunc(res1)
const output2 = someFunc(res2)
write('./output.txt',output1+output2)
这样看代码就像是同步的, 比python速度还快很多,可惜的就是相对于python学习曲线比较陡峭。
这种方式写出的代码可读性可维护性可以说是非常强,完全没有之前的回调地狱或者原生promise带来的副作用。
试想这么一种场景:
我们需要从多个数据库中读取数据,读取完成的顺序无所谓.
我们需要在多次数据读取全部完成之后再从每个数据中筛选出某种相同的属性
再对这些属性进行一些自定义操作,得到结果数据
最后将结果数据插入某个数据库
假设每一步的具体实现函数全部已经编写完成,所有异步的函数都已经封装成promise,那么用原生js组装以上四步代码需要怎么写?
我粗略估计一下可能需要二十行左右,而且代码的可读性不会很好,这里我简单介绍一个库:RxJS,中文名为响应式JS。
响应式编程发展已久,许多语言都有实现相应的库,对应的名字也以Rx开头,比如RxJava。
不说RxJS的设计原理,它的使用都牵涉到多种设计模式和技术,包括观察者模式,管道模式,函数式编程等,可以说这是一个上手难度相当大的技术,但它带来的编程体验是相当的好,这里我给出使用RxJS实现以上四步的代码
constOb= require('rxjs/Rx').Observerble & //Rxjs的核心观察者对象
const promiseArray = require('./readDatabase')//封装好的读数据库函数数组
const myfilter = require('./filter')//数据属性过滤函数
const operation = require('./operation')//自定义的逻辑操作
const insert = require('./insert')//数据库插入函数
Ob.forkJoin(...promiseArray.map(v=&Ob.fromPromise(v)))
.filter(myfilter)
.switchMap(operations)
.subscribe(insert)
除去将自定义的函数引入,四步操作每步只对应一行代码,这样写真的是非常简洁。
我们平时常用的,甚至是不常用的对数据的操作,基本都能在RxJS官网里都能找到封装好的API,有兴趣的同学可以多关注这个库,就我自己平时开发时的体验来看,这个库是相当的好用,但是要有一定的心理准备,因为确实有一些难度。
原文标题:干货 | Nodejs异步编程详解
文章出处:【微信号:ZTEdeveloper,微信公众号:中兴开发者社区】欢迎添加关注!文章转载请注明出处。
发布评论请先
在本文中,我们将查看如何应用这些变换至图像,包括3D图像,及其对深度学习模型表现的影响。我们将使用f....
我使用了知名的BeautifulSoup包,我花了5分钟,看了Justin Yek写的How to ....
十年前,戴鹏报考软件工程,当时看到专业课要学有高等数学、线性代数、概率论与数理统计、程序设计语言、数....
Python这门语言近来是越来越火,在国家层面越来越被重视。除了之前热议的加入高考和中小学教育之外,....
Kaggle 是互联网上最著名的数据科学竞赛平台之一,今年 3 月 8 日,这家机构被谷歌收购,6 ....
《手把手教你做项目:一步一步学PLC编程(三菱GX Developer)(双色版)》从入门和工程实际....
《手把手教你做项目:一步一步学PLC编程(三菱GX Developer)(双色版)》从入门和工程实际....
《手把手教你做项目:一步一步学PLC编程(三菱GX Developer)(双色版)》从入门和工程实际....
《手把手教你做项目:一步一步学PLC编程(三菱GX Developer)(双色版)》从入门和工程实际....
手把手教你做项目:一步一步学PLC编程(三菱GX Developer)(双色版)》从入门和工程实际的....
《手把手教你做项目:一步一步学PLC编程(三菱GX Developer)(双色版)》从入门和工程实际....
《手把手教你做项目:一步一步学PLC编程(三菱GX Developer)(双色版)》从入门和工程实际....
进入微信书首页,按下F12,建议使用谷歌浏览器,审查元素,点击“Network”选项卡,然后勾选“P....
谷歌展示了每一个单词出现的百分比(某个单词在这一年出现的次数/所有单词在这一年出现的总数),这比仅仅....
这段代码中,除了subplot函数之外都是我们熟悉的内容。subplot函数的前两个参数指定了sub....
1997年,来到沈阳读采矿工程专业,第一次接触计算机,上机课,老师教格式化磁盘命令Format,没记....
本手册中描述的每个梯形图指令都会触发一个特定操作。将这些指令组合到一个程序中时,便可完成 多种自动化....
真正的LabVIEW高手就像电脑游戏高手一样,都是用最快捷的方式来实现操作。本集中,您将看到NI工程....
C64x+ 网络培训
确定触点的初始状态取决于触点动作时对线圈的控制关系,一般来说,若需要闭合时,线圈才执行动作,则其初始....
如果您的应用程序加载并解析XML文件,可能您正在使用一个XML标准库模块。有一些针对XML的常见攻击....
相信有很多人和我一样在今年走上了工作岗位,和其他的毕业生不一样,我们成了程序员,这个注定了要和别人不....
本视频主要讲解了基本概念,以及面向对象的编程在LabVIEW中的应用。
真正的LabVIEW高手就像电脑游戏高手一样,都是用最快捷的方式来实现操作。
本集中,您将看到NI....
SpaCy 是一个具有优秀示例、API 文档和演示应用程序的自然语言处理库。这个库是用 Cython....
LabVIEW编程的实用技巧系列第二十三讲——制作不规则图形的子VI图标.avi视频教程
LabVIEW编程的实用技巧系列第十四讲视频教程
LabVIEW编程的实用技巧系列第十六讲视频教程
LabVIEW编程的实用技巧系列第二十一讲视频教程
LabVIEW编程的实用技巧系列第十九讲视频教程
LabVIEW编程的实用技巧系列第二十讲视频教程
本篇视频结合程序演示介绍了LabVIEW 2009在共享代码,程序界面和编程功能等编程环境方面的主要....
有时候并不是你的能力不够,也并不是你不够努力,只是缺少了一个正确的引导而已。
Pandas 是一个低学习成本高性能的数据结构和数据分析工具。抛开大熊猫憨态可掬的样子不说,「Pan....
因为在互联网高速飞奔的时代,技术实时更新,新来旧走,就连曾一度为霸者的 FLASH 技术,如今早已被....
你听说过SEMA么? 它是一个用来测试一个软件团队有多好的相当深奥的系统。不,等等!不要手贱点开这....
很多人都致力于把Python代码写得更Pythonic,一来更符合规范且容易阅读,二来一般Pytho....
这是一篇八千字的长文,是一些算法笔记的整理集合,希望能给你帮助。
如果你想要针对每个环境独立控制对各类 pip 包的管理,那么这就是一款绝佳的工具比如,你可以为 We....
此外,根据 Hacker News 招聘趋势排名,越来越多的公司对掌握 Python 技能的开发者感....
伴随着机器人的发展,机器人语言也得到发展和完善。机器人语言已成为机器人技术的一个重要部分。机器人的功....
LabVIEW作为先进的图形化编程语言开发环境,以其直观而快速的图形化编程方式、与硬件的无缝集成、面....
描述:LabVIEW作为先进的图形化编程语言开发环境,以其直观而快速的图形化编程方式、与硬件的无缝集....
ARM最新处理器Cortext-M3体系结构与接口编程
ARM最新处理器Cortext-M3体系结构与接口编程
执行子程序调用指令CALL等,如果条件不满足子程序调用时,程序的扫描就仅在主程序中进行,不再去扫描这....
本文档的主要内容详细介绍的是LED8位流水灯Verilog编程和应用程序的资料概述
 本书旨在让你成为优秀的程序员,具体地说,是优秀的Python程序员。通过阅读本书,你将迅速掌握编程....
LabVIEW编程的实用技巧系列第二十二讲视频教程
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司
电信与信息服务业务经营许可证:粤B2-【北京web前端招聘】宽拓科技招聘web前端-看准网
1、负责大数据平台应用产品的前端研发工作,一起实现一流的数据应用产品2、负责大数据应用产品的前端的维护升级&前端技术的优化3、根据产品原型图,与后端的API配合实现web交互页面【任职要求】 1、计算机、软件开发等专业本科及以上学历,至少2年以上前端开发经验2、具备良好的html&html5、css3、JavaScript、jquery、bootstrap、ES6/7、webpack等技术的编程能力和使用能力3、具有前端可视化开发经验、具有webapp开发经验4、熟悉nodejs技术及有相关开发经验5、熟练使用React、Vue、echartjs和D3.js&等其中一种框架6、能承受较大的压力、具有较强的独立解决问题能力7、做事严谨踏实,责任心强,具有良好的沟通能力和团队意识
& &宽拓科技公司(Quantex)是新一代科技和数据驱动型金融科技公司,于2014年2月开始运作,2015年3月正式成立,注册于北京中关村。目前员工分布于北京、深圳和美国硅谷,由金融和互联网专家共同发起成立。团队借鉴互联网先进生产方式和技术,为互联网时代的金融服务打造新引擎。科技和数据两大引擎,为金融业务发展带来全新体验,提升行业核心价值。我们的合伙人文化和工程师情怀让团队更加有凝聚力,让工作氛围更加愉快!& & & &我们的大牛来自这些公司:高盛、中金、野村证券、泰康人寿资管、eBay、腾讯...一群富有经验的专家,具有行业深度理解能力和专业性。我们的团队对国内外金融市场发展和业务形式理解深刻,对专业金融具有深入了解,具有超强实战经验,信仰科技对金融的驱动力和革命力。 加入我们,你将可以和大牛们并肩作战!我们以员工体验为重心,好的待遇和好的办公环境之外,还有多姿多彩的活动。我们注重健康,每周有运动活动,每天都有水果下午茶供应。各种短途游和年度旅游使我们更加团结,更加开拓眼界。老板特别有情怀,喜欢音乐,电影,背包游...所以我们每月有电影补贴,出去背包游也有补贴哦。
该公司其他工作机会
Duang~我要涨薪!
匿名填写收入情况,立刻获取涨薪20%的机会
面试难度系数
来自6个员工
匿名用户&&&&面试宽拓科技的&-&&其它
面试经历:
宽拓工作环境不错,这是第一印象,HR也给人很和善的感觉。面试由产品经理完成,问了非常多金融知识,但跟...
面试未通过面试整体感受:一般困难
面试通关必备
最新面试题等你来看
看了该职位的人还看了
广州佰聆数据股份有限公司
哈尔滨深哈孵化器有限公司
广州聚慧网络科技有限责任公司
看准网(Kanzhun.com)为您免费提供宽拓科技相关信息,包括宽拓科技招聘、工资、面试、评价及员工、工作环境照片,以上信息均由宽拓科技员工匿名提交,看准网整理发布,所有宽拓科技相关内容均不代表看准网意见!
爆料数十万公司信息爆料
互助职场人在线互动
工资公司实际工资查看
改简历专人改简历提高工资
老鸟私聊求助能挣钱
输入手机号,下载看准APP
扫码下载看准APP或各大应用商店搜索:看准
获取职位最新招聘信息
一有该职位最新招聘信息马上通知您
宽拓科技正在直聘
宽拓科技·项目主管
我在boss直聘等你来沟通入职。
500万人安装扫一扫,下载APP
附件简历:
请上传简历!
附件简历:
爆料数十万公司信息爆料
互助职场人在线互动
工资公司实际工资查看
改简历专人改简历提高工资
老鸟私聊求助能挣钱
输入手机号,下载看准APP
扫码下载看准APP或各大应用商店搜索:看准

我要回帖

更多关于 nodejs 代码加密 的文章

 

随机推荐