《Nodejs开发加密货币》之三:Nodejs让您的前端开发像子弹飞一样

Node.js-node-crawler-NodeJS中的爬虫拥有简洁的API node-crawler - NodeJS中的爬虫拥有简洁的API 立即下载

关于

《Nodejs开发加密货币》,是一个加密货币产品的详细开发文档,涉及到使用Nodejs开发产品的方方面面,从前端到后台、从服务器到客户端、从PC到移动、加密解密等各个环节。代码完全开源、文章免费分享。 相关资源见 http://ebookchain.org

QQ交流群: 185046161

前言

从本文开始,我们正式进入Nodejs的世界。

本文,将指引您搭建Nodejs开发环境,向您介绍Nodejs的安装、使用,帮您快速进入Nodejs的世界。

通过本文,让您对前端开发有一个完整、全新的认知,可以学习到如何将一些第三方平台的资源为己所用,比如像巴比特一样即时显示交易市场的交易行情。

本文的实例,就是上篇文章提到的加密货币开发语言统计分析项目(Statistical Analysis of Cryptocurrency Development Languages,简称Sacdl),点击这里,在线体验。

项目需求

Sacdl项目需要具备以下几个功能:

  • 方便地读取第三方网站(这里是github)的Api,实现项目搜索功能;
  • 对读取的数据集中处理,方便地转化为我们需要的信息;
  • 通过柱状图、矩阵图、表格等图表格式,将数据可视化;
  • 方便扩展,为以后添加更多图表样式或其他网站Api(比如交易市场的)做好准备。

技术选型

无处不选择。大方向要选择,具体到每个开发包都要去甄别,安全吗?好用吗?性能高吗?是否有更好的方案?等等。

仅从上述需求来说,一个html文件,再加一个js文件就基本搞定,第三方包都用不着,Nodejs更是大才小用。

但事实上,很多仅仅是前端的项目,比如:Bootstrap等,都基于Nodejs,为什么?答案很简单,它供了诸多方便实用的工具。

比如说:

  • 组织方便:js没有模块化组织代码的能力。一个项目,js代码通常会分割在不同的文件中,以往的方式,处理起来非常头疼,现在利用Nodejs的模块管理,可以让您彻底解脱;
  • 资源广泛:Nodejs的出现,让js第三方包像雨后春笋一样遍地开花。需要什么,一条命令,Nodejs就帮您办了,这会带来极大便利;
  • 全栈处理:开发完,还有很多事情要做,比如:要对前端代码js或css文件进行合并、压缩、混淆,以及项目部署等。体验过ruby on rails一键部署功能的小伙伴,都会印象深刻。Nodejs也很容易做到,而且更加自然、流畅。

总之,有了Nodejs,我们可以像开发后台程序一样组织前端代码和项目了;有了Nodejs,就有了它背后强大的技术社区支持。

Nodejs简介

有小盆友说,第一次看到Nodejs,还以为就是一个js文件呢。呵呵,其实,很多前端的应用,比如大家吵得最欢的前端开发框架三剑客,Angular.js, Backone.js, .Ember.js等,其实就是一个js文件。那么,

Nodejs是什么呢?

官方解释是这样的:

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. 

翻译如下:

Node.js® 是一个搭建在Chrome V8上的JavaScript即时运行平台,采用事件驱动、非阻塞I/O模型,既轻量又高效。

用句大白话解释就是,Nodejs是一个可以让您利用JavaScript语言开发应用的平台, 是构建运行在分布式设备上的数据密集型实时程序的完美选择。

请注意哦,这里可没说是Web应用,很多人认为Nodejs仅能开发以服务器为中心的web应用,其实不然,PC端、移动端都可以。当然,我们看到的大部分是Web应用,它是php+apache, jsp+tomcat, ruby on rails + Passenger(或thin) + nginx 等传统web开发的绝佳替代品。

如果你还没有直观感受,那么,我告诉你一个信息,Nodejs的作者原本是想开发一种取代apache、nginx、tomcat等产品的传统服务器软件的,结果发展成了今天Nodejs的模样,你用Nodejs写的每一个应用,即可以认为是一个服务器软件,也可以认为是一个web应用,而且它是如此简单、高效。

什么是数据密集型、实时应用?

聊天室、即时通信等都是。当然,所有的交易市场(比特币、股票、基金等),电子商务网站的即时交易等也是。甚至物联网,比如电器设备的监控和远程控制。本人刚完成的一个项目,是一家大型连锁超市的电器设备综合监控系统,就是使用Nodejs开发的。

开发步骤

下面的过程会有点罗嗦,耐心点,很简单。

1.搭建环境

对于初学者,建议先去[Nodejs官方网站][]浏览一遍。这里有币友推荐的一个中文网站,runoob.com,对于英文不太好的用户,有一定帮助。

我个人的开发环境是这样的:

  • 操作系统是Ubuntu系统:您可以在现有系统上,使用虚拟机软件安装它。我们的全部示例和截图都是在ubuntu上完成;

  • IDE工具:Sublime Text;

(1)Nodejs的安装

强烈建议参考官网信息([Nodejs官方网站][],见参考资料)

我在Ubuntu上通过nvm安装管理Nodejs,具体方法,这里有一篇详细文档,快速搭建 Node.js 开发环境以及加速 npm,请务必阅读一遍。这里摘录其中关键命令(下面的命令都要在Ubuntu的命令行程序下运行):

安装Nvm

$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash

用Nvm安装Nodejs

$ nvm install 5.1.0
$ nvm alias default 5.1.0

说明:5.1.0 是Nodejs版本信息,写作本文时,最新稳定版是5.4.0,长期支持版是4.2.4

安装使用CNpm

使用淘宝npm镜像,可以提高我们的组件下载数度

http://npm.taobao.org/

$ npm install -g cnpm --registry=https://registry.npm.taobao.org

查看版本信息

$ nvm -v
$ node -v
$ npm -v

我的版本信息如下:

nvm 0.29.0
node v5.1.0 
npm v3.3.12
2.新建工程

在您电脑上,新建一个文件夹sacdl-project,作为工程目录,路径如下:

/home/yourname/projects/sacdl-project

我们通常会把前端代码放在public目录下,然后分别建立js,css,images等目录,最后建立文件index.html,js/app.js,用于显示页面和写我们的js代码,结构如下:

project-folder

上述结构中,

`js/searcher.js`是搜索框处理代码,
`js/utils.js`是数据处理代码,
`js/bar.js`文件是d3.js的柱状图代码,
`js/treemap.js`是树状矩阵图的代码,
'js/app.js'用户综合调用,类似于控制器或路由。

前端第三方组件,比如d3.js等都存放在bower_components,由bower自动生成; 后台第三方模块在node_modules,由npm自动生成。

3.前端组件

在命令行,进入上述工程目录,安装前端管理工具bower

cnpm install -g bower # 也可以使用 npm install * 命令,二者一样,只不过cnpm使用淘宝镜像,在中国安装会快些

说明:bower是一个npm包,是专门用来管理web前端(包含js,css,images,fonts等)依赖包的。我们可以简单类比,bower用于管理前端包,npm管理后台库(包),二者用法十分相似。

初始化

bower init

结果如下:

bower-init

这样会生成一个bower.json文件,这样我们的代码就被作为一个完整的前端组件来管理了。

通过bower,安装d3.js

bower install d3 --save

选项--save将在bower.json文件里,写入下面的信息:

  "dependencies": {
    ...
    "d3": "~3.5.12",
    ...
  }

这样,在另一台电脑开发时,克隆完代码,就可以直接运行下面的命令,自动安装全部依赖的第三方组件了

bower intall

说明:d3.js是提供了前端显示的柱状图、饼状图等,是数据可视化非常出名的前端开发包。国人的有百度的echarts,还有一个highcharts,这三者经常被拿来比较。简单的区分,就是,d3.js像开发包,可以任由您编程开发,但据说入门较难;其他两个更像是模板,拿来就用。

这里,我选择了d3.js,纯属个人喜好,一方面,我个人喜欢完全控制代码;另一方面,在开发电子书版权保护和交易系统,用到了它。

4.前端流程

按照上面的需求,我们的流程大致是这样的:

front-data-follow

1.接受请求:提供一个输入框,接受用户输入,获得查询关键字,并转化为github.com的Api请求地址;
2.获得数据:根据上述地址,通过ajax请求数据(这里是d3.js的d3.json()方法),对数据进行处理;
3.展示数据:使用d3.js编写图表样式,将上述数据展示出来。
5.学习Api

第一步非常简单,只要提供一个输入框就是了。我们直接从第二步开始研究吧。

github是用ruby on rails开发的,它的api具有典型的ror的restful风格。下面是,官方搜索示例

请求下面的地址

https://api.github.com/search/repositories?q=tetris+language:assembly&sort=stars&order=desc

可以得到对应的json格式的数据。 官方是使用的curl命令行工具,我们直接使用浏览器即可,有图为证:

github-search-example

这就是我们得到的原始数据结构。大部分情况下,需要重新整理,不然就不用费劲开发了。这里,我们先把它转化为树形矩阵图需要的数据格式,如下:

{
    "name": "languages",
    "children": [{
        "name": "javascript",
        "children": [{
            "name": "imfly/myIDE",
            "watchers_count": 100,
            "forks_count": 50
        }]
    }]
}

这里的意思是,整个数据根节点就是languages(自己建就是了), 它以各个语言为子节点;各语言节点,则以它们的版本库为节点,这里才存储着我们需要的基本信息。

6.数据整理

我们在public/js文件夹下,新建utils.js(名字随便起),然后使用文本编辑器打开,我使用的是Sublime text.

(1)模块化前端代码

为了实现模块化编程,采取下面的格式组织前端代码(当然,这并不是Nodejs的模块形式,不过异曲同工),

var Utils = (function(){
    //局部变量定义
    var a = 0;

    //公共方法
    return {
           settings: function(){},
       init: function(){},
       ...
    }

    //私有方法
    function name(){}
}())

在引入该文件的index.html文件里,就可以这样调用

Utils.init();

而无法这样调用

Utils.name();

(2)转换数据格式

如何将api读取的数据整理成我们想要的格式呢?代码如下:

// 一定会有一个地方传入dataset,先别着急
function getTreeData(dataSet) {
    var languages = {};

    //新建根节点
    var result = {
        "name": "languages",
        "children": []
    }

    //循环处理子节点
    if (dataSet && dataSet.items) {
        var items = dataSet.items;

        //先找出涉及到语言
        items.forEach(function(item, index) {
        if (typeof languages[item.language] === "undefined") {
            languages[item.language] = index;
        };
        })

            //根据语言进行整理
        for (var language in languages) {
        //原来有些版本库,是没有语言信息。github的语言识别并不是完美的
        if (language === "null") {
            language = "others";
        };

        //每种语言的子节点
        var root = {
            "name": language,
            "children": []
        };

        //从全局数据中再次查找我们的数据
        items.forEach(function(item, index) {
            var child = {
                "name": item.full_name,
                "watchers_count": item.watchers_count,
                "forks_count": item.forks_count
            };

            if (item.language === language || (item.language === "null" && language === "others")) {
                root.children.push(child);
            };

        })

        result.children.push(root);
        }
    }

    //返回结果
    return result;
}

显然,这是一个私有方法。因为类似这样对数据的整理,每一个图表都要做。我们是把上面的方法作为第一步处理,然后把结果缓存,其他格式的数据都以它为基础获得(公共方法)。请参考源码js/utils.js,·点这里。

7.D3.js渲染

数据有了,终于有机会弄成我们想要的样式了。

(1)了解d3.js流程

有人说,对于初学者,d3.js的入门有点困难。如果您尝试了之后,真觉得难,可以选择echarts,或xcharts(来自于d3.js,下面有链接),方法相同。

d3.js的基本流程是:

  • 在html中,提供展示图表的位置,通常是给一个div#Id;
  • 请求并填充数据;
  • 渲染图表,用append()新增元素,用remove()删除多余元素;

我们用最简单的例子,演示一下(代码在工程源码的test文件夹下):

在test.html页面添加一个div元素,如下:

<div id="testId"></div>

新建test.js文件,写下如下代码:

//这是要渲染的数据,可以动态获得
var dataset = [1, 2, 3, 4];

//填充数据,通常要使用d3.layout提供的数据模板进行处理,然后用data()方法去填
var chart = d3.select('#testId')
        .selectAll('p')
        .data(dataset, function(d) { return d; });

//渲染视图,主要是下面2个方法
//data()之后才可以调用的enter()方法,意思是有数据填充的那部分图表元素,通常去增加`append`元素
chart
.enter()
.append('p')
.text(function(d, i) {
    return [d, i];
})

//data()之后才可以调用的exit()方法,意思是无法获得数据填充的那部分图表元素,通常要删除`remove`
chart.exit().remove();

比如上面,我们默认提供了dataset的4个数值,第一次渲染,会正常显示4个元素;接着,数据dataset换成[5,6],再此渲染,enter()方法将获得原来渲染[1,2]的元素,并将其值换成[5,6],而[3,4]位置的元素因为没有了数据,被删除掉。这样就实现了图表动态转换。

注意:上面提到的d3.layout可能是一个颠覆三观的概念。layout作为层的概念,通常在html视图中用作全局共享的模板文件,比如:layout.html, layout.ejs等。但是,这里d3.js是用在数据上的,提供了d3.layout.treemap()等方法,用于对各种图表数据进行计算和处理,即:数据模板。d3.js的视图处理,就是使用append()和remove()去增加或删除元素来处理,配合诸如.style()元素样式格式化的方法,实现页面控制。显然,这样做的意义就是真正的数据驱动。

(2)渲染我们的数据

d3.js提供了d3.json(),d3.csv()等请求数据的方法,我们上述数据是json格式,自然就用前者了

我们以矩阵图为例(我也是参考官方的示例,见参考资源),在index.html加入如下元素

<div id="sacdlTreemap"></div>

然后,编写js/treemap.js代码,用于渲染图表。

最后,在js/app.js里,加载数据:

----部分代码------
d3.json(url, function(err, data) {
    if (err) {
    ...
        alert("加载数据失败,请检查您的网络设置。")
    };

    Utils.getData(data);

    Treemap.show();

    ...
});
----部分代码------

具体请看源码。

(3)查看效果

前端不用服务器,因此直接右键,选择在浏览器中打开就是了。看看效果如何。

front-url.jpg

8.代码调试

如果达到预期效果,如何发现问题所在呢?前端调试和测试也是一门学问,内容所限,无法细说。告诉您本人常用的调试前端代码的工具,就是火狐浏览器的firebug扩展插件。当然,对于本应用,用火狐或谷歌浏览器默认的控制台就可以了。

具体用法是,在打开的浏览器页面,按下F12,就会在页面底部弹出控制台窗口,如下:

firefox-console

错误信息,断点信息等一目了然。

9.部署发布

经过一番调试,代码终于达到预期效果。为了提高页面加载速度,增强用户体验,需要对代码进行合并、压缩,如果要保护自己的劳动,不想被别人无偿使用,还需要对代码进行混淆,最好部署到专门的服务器空间上去。这些工作,可以实现一键操作。

Nodejs圈子里,有2个最为流行的工具,一个是grunt,出现的最早。另一个是gulp,后来居上,号称是为了解决前者的问题而生的,目的就是为了消灭前者。事实证明,gulp确实很好用,简单、高效。我们就用它。

(1)原理

gulp用到的核心概念就是管道流,你可以理解成我们生活中的各种管道的概念,比如自来水管道。文件或数据就是水,gulp各类插件就是过滤网等水处理器械。

设计一个任务,就是建设一条管道,涉及到5个方法,分别是:

1>构建管道并起个名字用`gulp.task()`,
2>管道入口方法叫`gulp.src()`(src代表源文件),
每一节管道叫`.pipe()`(要用在入口和出口中间,在其中放入各种插件方法,就相当于加了层过滤网),
3>一直流向管道出口,方法叫`gulp.dest()`(dest英文意思是目标),
4>监控水流变化(文件变化)用`gulp.watch`,
5>综合调度各个管道的运行,用`gulp.run`

最后在命令行启动管道,就用gulp或gulp taskname命令

如图,看看下面的几条管道,是不是很容易理解:

pipe

注:pipe管道,是linux或Nodejs等对于文件处理的一个重要概念,我们会在以后的文章中进一步说明。

(2)安装

首先,

cnpm install gulp --global

这里使用--global进行全局安装,这样我们才可以在任何路径下使用gulp命令。

然后,

cnpm install gulp --save-dev

这里安装在工程目录下,目的是方便管理。同时,因为gulp仅仅是开发辅助工具,只在本地开发机器上使用,因此上述命令添加--save-dev选项,把gulp模块安装在开发依赖里。

(3)建管道

gulp命令默认请求gulpfile.js文件,手动建一个吧,上面说各类管道(任务)都在这个文件里,本工程对js进行处理的代码如下:

----其他代码-----
// 开建管道,名字叫`js`
gulp.task('js', ['clean'], function() {
    // 合并、压缩、混淆,并拷贝js文件
    return es.merge(                   //这是个workflow插件,是Nodejs模块,都是Nodejs应用,当然也可以使用了
            gulp.src(assets.js.vendor) //管道1入口
            .pipe(gulp.dest(settings.destFolder + '/js/')), // 直接流到管道1出口,相当于简单拷贝

            gulp.src(assets.js.paths) //管道2入口
            .pipe(order(assets.js.order)) //过滤网1:排序
            .pipe(sourcemaps.init())  //过滤网2:建sourcemaps
            .pipe(uglify())   //这算是管道中的管道了,过滤网3:混淆处理
            .pipe(concat(settings.prefix.destfile + '.js')) //过滤网4:合并处理
            .pipe(sourcemaps.write()) //建maps结束,输出sourcemaps
            .pipe(gulp.dest(settings.destFolder + '/js')) //管道2出口
        )
        .pipe(concat(settings.prefix.mergefile + '.js'))  //汇总管道:对上述2个管道的输出再合并
        .pipe(gulp.dest(settings.destFolder + '/js/'))    //汇总管道出口
});
----其他代码-----

详情请看源码。

在命令行,输入如下命令,运行该任务

gulp js

(4)插件

上述代码中用到的order,sourcemaps,uglify等对应3个gulp插件,可以从官网找到,本工程涉及到的,算是几个最常用的插件,如下:

"gulp-concat": "^2.6.0",        //合并js,css等
"gulp-cssnano": "^2.1.0",       //css压缩,取代了gulp-minify-css
"gulp-gh-pages": "^0.5.4",      //部署到github的`gh-pages`,本工程在线演示就是这么部署的
"gulp-imagemin": "^2.4.0",      //图片压缩
"gulp-order": "^1.1.1",         //js,css等顺序合并等
"gulp-processhtml": "^1.1.0",   //将处理完的代码,替换到.html、.ejs等模板文件里
"gulp-sourcemaps": "^1.6.0",    //产生sourcemaps文件
"gulp-uglify": "^1.5.1",        //混淆和压缩js文件

(5)部署

上面的插件列表里,有一个gulp-gh-pages插件,可以帮我们部署到gh-pages

var ghPages = require('gulp-gh-pages');

//Deploy
gulp.task('deploy', function() {
    return gulp.src('./dist/**/*')
               .pipe(ghPages());
});

运行如下命令,即可

gulp deploy

当然,最好在运行部署命令之前,先运行合并、压缩等处理命令,如果想省事,就定义在上述部署任务里。请参考源码。

总结

写完这一章,好累。回头看看,发现上面的每一个小节,其实都可以用一章来说明。缺乏细节,会让读者,特别是新手,很辛苦。相反,太注重细节,又会让我们失去主题。所以,这也是一个很难取舍的过程,欢迎您提供宝贵意见或建议。

这里提供了完整的程序源码。源码提供的功能比文章描述的多,比如对输入框的处理、事件的监听、多数据格式的处理,还包括bootstrap的使用等。但文章仅摘录了部分核心内容,在阅读的时候,要注意结合源码,实在不明白就参考下面提供的资源,或给我留言。

现在,您应该可以自己动手试试,应该能够轻松的把比特时代、okcoin等交易市场的交易行情,即时的显示在自己的网站上了。如果,掌握些比特币核心代码,它也提供了很多Api,能不能像本文这样直接读取呢?如果可以的话,岂不是很容易就能开发一个blockchain.info?

具体分析,请看下一篇:《Nodejs开发加密货币》之三:Nodejs让后台开发像前端一样简单,简单介绍Nodejs后台开发实践,写Nodejs模块,为以后的代码分析打好基础。

链接

项目源码: https://github.com/imfly/sacdl-project

试用地址:https://imfly.github.io/sacdl-project

本文源地址: https://github.com/imfly/bitcoin-on-nodejs

电子书阅读: http://bitcoin-on-nodejs.ebookchain.org/

参考

(1)参考用例

d3.layout.treemap: http://mbostock.github.io/d3/talk/20111018/treemap.html

Grouped horizontal bar chart: http://bl.ocks.org/erikvullings/51cc5332439939f1f292

(2)官方网站

Nodejs官方网站: https://nodejs.org/

Bower官方网站: http://bower.io/

d3.js官方网站: https://d3js.org

(3)其他文档

xcharts一个封装d3.js的图表展示包

大数据时代的图表可视化利器——highcharts,D3和百度的echarts

d3的使用心得和学习资料汇总

grandmaster:Node.js中算法交易策略的回测和执行 棋圣 Grandmaster是用Node.js编写的策略回测和执行引擎。 这些策略在很大程度上可由用户配置,并且可以包括任何数量的技术指标和补充数据源。 它非常灵活且易于上手。 我不是专家,但是我使用自己的策略在此引擎上交易取得了巨大成功,该引擎同时交易传统股票(股票)和现代资产(加密货币)。 使用风险自负。 安装 要求 Node.js> = 8 NPM-或-纱线 MySQL 可选,但建议 PHP> = 7.0(可能适用于PHP 5.5+,但尚未经过测试) 用于导入历史数据,但是如果您已经有数据或有其他获取数据的方法,则不需要PHP。 作曲家用于安装上述PHP脚本的依赖项。 Redis(可选) 用于向执行引擎/从执行引擎流传输数据和交易信号。 如果您仅使用此系统来对您的策略进行回测,或者您想使用其他方法来处理流,则不需要Redis。 推荐设置 我建议在隔离的环境(例如虚拟机或容器)中 立即下载

相关推荐

bitcoin-on-nodejs_nodejs_区块链_

用node.js实现区块链开发,对区块链开发有兴趣的同学可以下载看看

《Nodejs开发加密货币》之二十五:函数式编程入门经典

虽然大家已经被面向对象编程(Object-oriented programing)洗脑了,但很明显这种编程方式在 JavaScript 里非常笨拙,需要适当的了解点函数式编程,本篇文章借鉴了几篇优秀文档(见参考),结合亿书项目实践和个人体会,汇总了一些平时用得到的函数式编程思路,为更好的优化设计亿书做好准备。本篇内容包括函数式编程基本概念,主要特点和编码方法。

玩转比特币,解密新技术——imfly的专栏 3642

别慌!Oracle MOS登录页面大变样?5分钟搞定新旧账号登录全流程

本文详细解析Oracle MOS登录页面改版后的新旧账号登录流程,帮助用户快速适应账号体系变革。针对传统MOS账号和OCI账号的不同应用场景,提供5分钟内完成无缝切换的实用指南,包括登录步骤、书签设置和密码管理策略,助力数据库管理用户高效访问Oracle技术支持资源。

weixin_30275415的博客 517

Node.js与前端开发实战

在本文中,我们将探讨如何将Node.js与前端开发实战相结合。我们将介绍如何利用Node.js构建强大的后端服务,并探讨如何与前端应用程序进行集成。我们将讨论使用Node.js提供API服务、处理数据和与数据库交互的实际场景。此外,我们还会深入研究前端开发中常用的构建工具、自动化流程和部署技巧,以及如何通过Node.js优化前端开发工作流程。

会思想的苇草i的博客 5051

k8s中如何使用gpu、gpu资源讲解、nvidia gpu驱动安装

gpu资源也是服务器中常见的一种资源,gpu即显卡,一般用在人工智能、图文识别、大模型等领域,其中nvidia gpu是nvidia公司生产的nvidia类型的显卡,amd gpu则是adm公司生产的amd类型gpu。企业中服务器最常见的就是英伟达gpu服务器了。本篇也主要讲解英伟达驱动相关的知识。

MssGuo的博客 1万+

【SAP PO】SAP PO 接口配置完整教程之一RFC服务发布

SAP RFC开发,PO接口配置

XLevon的博客 2万+

【前端开发-----NodeJS】nodejs快速入门教程,想要快速入门nodejs就看这一篇文章就够了,基础部分特详细,按要点整理知识点

nodejs快速入门教程,想要快速入门nodejs就看这一篇文章就够了,特详细的保姆级教程;基础部分特详细,按要点整理知识点;内容包括文件操作,路径处理,模块化,中间件,路由,身份认证,数据库操作,数据校验等等;用express框架快速搭建自己的后端服务器。

m0_67844671的博客 3万+

【Excel VBA 编程】表格内自动生成进度条

在表格中生成进度条,进度条需要自适应单元格的宽度,根据不同进度区间变换颜色,并且按照进度数据大小显示其长短

wei1019的专栏 1519

前端开发_Node.js

介绍node.js,一些经常使用的模块,npm使用

qq_57689612的博客 2253

使用TMS320F28335控制四位共阳数码管

简要阐述利用F28335控制四位共阳数码管的整个过程,包括原理、思路、部分代码以及调试过程。

liujunhaozuishuai的博客 2659

Tessent ATPG Flow 流程 (代码和注释)

**摘要:Tessent ATPG流程分为五个阶段:1) 环境初始化(加载设计文件、库和扫描链配置);2) DRC规则检查(验证设计可测试性并修复违例);3) ATPG向量生成(设置故障模型并运行引擎优化覆盖率);4) 向量验证与后处理(仿真验证并生成ATE格式文件);5) 进阶操作(多电压域和存储器测试)。流程输出包括测试向量、覆盖率报告和验证日志,支持stuck-at和transition故障模型,使用Tcl脚本控制。关键步骤包含扫描链配置、EDT压缩和覆盖率优化。

QQ_778132974的博客 931

【前端开发-----NodeJS】Node.js 快速入门教程:一篇文章搞定

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它能够让 JavaScript 不仅运行在浏览器内,还能用于服务器端开发。Node.js 提供了一整套工具和模块,使 JavaScript 在服务器端可以处理文件、数据库和 HTTP 请求等任务。通过本篇文章,你应该已经掌握了 Node.js 的基础操作,了解了如何创建和使用模块、如何处理文件系统以及如何构建一个简单的 HTTP 服务器。

小蜗牛的珍贵百宝箱 9796

Python代码加密与发布方案详解

本文详细介绍了多种Python代码保护方案,从基础加密到高级混淆,以及商业化发布的最佳实践。基础加密方案包括编译为字节码和使用PyArmor基础加密,适合临时保护和小项目。商业级加密方案如Cython编译和Nuitka完整打包,提供更高的保护强度和执行效率。高级混淆方案涉及控制流混淆、字符串加密和完整混淆工具链,进一步增加逆向难度。商业化发布方案则强调许可证系统集成、硬件绑定保护和完整发布流程。此外,文章还探讨了反逆向技术、最佳实践建议和常见问题解决方法。通过组合使用这些技术,可以构建出适合不同安全需求的P

数据知道的博客 1万+

基于nodeJS的前端开发到底啥意思?

今天在回来的班车上突然顿悟了‘基于node的前端开发’这句话的奥义!这个长久以来困扰着自己的问题,一直在寻找的答案,也许我现在的理解也不见得就十分准确,但是可以肯定的是,对于现阶段的我自己来说是有帮助的,现在记录如下:上个周末去了上海书城去看了下关于node的书籍,在深入浅出node中看到: node之父最初只是想搞一个拥有对搞并发还有高性能并且不阻塞的服务器,然后综合很多因素,最后决定用js来实现

coffee3139564344的博客 1万+

Winform从入门到精通(2)——Button(史上最全)

本文介绍winform中Button控件的详细用法,包括所有属性和事件

qq_34059233的博客 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【保姆级】前端使用node.js基础教程

通过深入了解这些 Node.js 命令和工具,开发人员可以更高效地管理项目、调试代码,以及进行单元测试,从而提升 Node.js 应用程序的质量和可靠性。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,常用于服务器端编程。欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。

肥晨开发的学习之路 4042

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

开启前端全栈之路—— node 基础

能够和后端程序员更加紧密的配合。网站业务逻辑前置,学习前端技术需要后端技术支撑(Ajax)。扩展知识视野,能够站在更高的角度审视整个项目。Node 运行环境提供的 API都是以模块化的方式进行开发的,所以我们又称 Node 运行环境提供的 API 为系统模块。别人写好的、具有特定功能的、我们能直接使用的模块即第三方模块,由于第三方模块通常都是由多个文件组成并且被放置在一个文件夹中,所以又名包。

梅花寺 410

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

《Nodejs开发加密货币》之五:您必须知道的几个Nodejs编码习惯

前言前面的两篇,以sacdl工程为例,简单介绍了Nodejs的环境搭建和代码组织。这一篇,做个简单的小结,把涉及到的编码习惯用我个人的理解,提示性的说明一下。编程,其实就是用特定的语言讲故事、写规则。特定就是习惯,就像中国的方言,掌握了技巧,很快可以交流,剩下的细节慢慢积累就是。比特币体现了人类去中心化的本质,Nodejs也是最能体现人类特质的编程语言之一,比如:一切都是数据流,事事皆回调。

玩转比特币,解密新技术——imfly的专栏 5989

《Nodejs开发加密货币》之八:一个精巧的p2p网络实现

加密货币都是去中心化的应用,去中心化的基础就是P2P网络,其作用和地位不言而喻,无可替代。事实上,P2P网络不是什么新技术。但是,使用Nodejs开发的P2P网络,确实值得围观。这一篇,我们就来看看Ebookcoin的点对点网络是如何实现的。

玩转比特币,解密新技术——imfly的专栏 7646

【前端开发】Node.js学习教程

从基础到核心模块 本文全面介绍了Node.js的基础知识和核心用法。首先阐述了Node.js在服务器开发、前端构建和实时应用中的优势,随后详细指导了不同操作系统下的安装步骤。基础部分涵盖了"Hello World"程序、变量类型和流程控制语句。核心模块部分重点讲解了文件系统(fs)和HTTP模块的使用方法。异步编程部分对比了回调函数、Promise和async/await三种处理方式。最后推荐了官方文档、书籍和在线课程等深入学习资源。

大雨淅淅的博客 2438

【前端】Node.js使用教程

Node.js是一个功能强大的平台,支持快速开发高性能的Web应用和服务。通过掌握上述概念和工具,您可以构建出既安全又高效的应用。不过,请记住,持续学习和实践是成为优秀Node.js开发者的关键。随着技术的不断发展,新的库、框架和最佳实践将不断涌现,您需要保持对新知识的关注并不断更新自己的技能。

大雨淅淅的博客 1万+

《Nodejs开发加密货币》之十五:加密货币就是货币

这是一篇加密货币的入门文章。惯性定律不仅存在于物质世界,也存在于人类的认知世界。人类的经验越丰富,理解新事物的阻力就会越大。“加密货币就是货币”,言外之意就是“加密货币可能不是货币”。在我接触的很多朋友当中,一开始认为后者的更多。包括我自己,也是经过探究一段时间之后,才认定这个结论的。本文,试图用最直白的语言,写一篇通俗、简单的入门文章,架起人类思考和接纳加密货币的桥梁。

玩转比特币,解密新技术——imfly的专栏 8642

《Nodejs开发加密货币》之一:开栏的话

《Nodejs开发加密货币》是目前市面上,唯一一本详细介绍使用Nodejs开发加密货币的免费电子书籍,是基于实际项目的实践经验,可以作为Ebookcoin(亿书)、Lisk、crypti等加密货币的开发文档。本系列文章,只有开始,没有结束。。。

玩转比特币,解密新技术——imfly的专栏 6716
上一篇: 《Nodejs开发加密货币》之二:Nodejs原来在币圈如此流行?
下一篇: 《Nodejs开发加密货币》之四:Nodejs让后台开发像前端一样简单
imfly
博客等级 码龄22年 220粉丝 23原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值