ホームページ  >  記事  >  バックエンド開発  >  基本的なnodejsの操作方法を詳しく解説

基本的なnodejsの操作方法を詳しく解説

小云云
小云云オリジナル
2018-03-20 11:08:243282ブラウズ


以前のプロジェクトでは、高頻度の収集と決済に PHP を使用していたため、PHP の効率が大幅に低下し、PHP ブロックにより Web ページが正常に実行できなくなりました。したがって、データベースの操作と収集のために PHP を置き換えることができ、PHP と完全に統合できる言語を見つけてください。

Node.js は、Chrome V8 エンジンに基づく JavaScript ランタイム環境です。 Node.js はイベント駆動型のノンブロッキング I/O モデルを使用するため、軽量で効率的です。 Node.js のパッケージ マネージャー npm は、世界最大のオープンソース ライブラリ エコシステムです。

初めてnodejsを知る

nodejsは、phpコンポーザーと同じように、npmコマンドを使用してnodejs関連のプラグインをダウンロードできます。
フロントエンドJavaScriptを使用して基本的な機能のみを操作でき、学習コストが大幅に削減されます。

通常の操作

nodejsリンクデータベース

この時点では、npmを利用してmysqlモジュールをダウンロードします
プロジェクトに切り替え、npm install mysql -save
SQLを実行するファイルを作成します mysql.js

//连接数据库var mysql = require('mysql');var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'root',
    database:'carbird'});

connection.connect();//查询connection.query('select * from `think_order`', function(err, rows, fields) {
    if (err) throw err;
    console.log('查询结果为: ', rows);
});//关闭连接connection.end();

js、現時点ではデータ収集を含むPHPのプレッシャーを共有するための定期決済機能を含むほとんどの機能が実装できます

nodejsで1680210枚の宝くじを収集してデータベースに保存する例を作成します

pacong.jsを作成します

var http = require("http");var iconv = require('iconv-lite');var option = { 
hostname: "api.api68.com",
path: "/klsf/getLotteryInfo.do?issue=&lotCode=10005"}; 
var req = http.request(option, function(res) {res.on("data", function(chunk) {console.log(JSON.parse( iconv.decode(chunk, "utf-8") ));
}); 
}).on("error", function(e) {console.log(e.message);
});
req.end();

where var iconv = require('iconv-lite'); 中国語の文字化け問題を解決するには、このモジュールを npm でダウンロードして導入する必要があります

結果は次のようになります:

{ errorCode: 0,
  message: '操作成功',
  result:
   { businessCode: 0,
     message: '操作成功',
     data:
      { preDrawIssue: 2018030717,
        preDrawCode: '03,13,10,11,01,18,07,12',
        drawIssue: 2018030718,
        drawTime: '2018-03-07 12:01:20',
        preDrawTime: '2018-03-07 11:51:20',
        drawCount: 17,
        firstDragonTiger: 1,
        lastBigSmall: 0,
        sumBigSmall: 1,
        sumNum: 75,
        sumSingleDouble: 0,
        fourthDragonTiger: 0,
        secondDragonTiger: 0,
        thirdDragonTiger: 1,
        frequency: '',
        lotCode: 10005,
        iconUrl: 'http://webapp.1680180.com/images/icon/3x/gdkl@3x.png',
        shelves: 0,
        groupCode: 3,
        lotName: '广东快乐十分',
        totalCount: 84,
        serverTime: '2018-03-07 11:53:50',
        index: 100 } } }

より複雑な収集と処理を行うために Cheerio モジュールを導入しますデータ、クローラーウェブサイト

var express = require('express');var app = express();var request = require('request');var cheerio = require('cheerio');

app.get('/', function(req, res) {

  request('http://www.zhongjiantang.com/index.php?c=detail&id=57', function(error, response, body) {
    if (!error && response.statusCode == 200) {
      $ = cheerio.load(body);
      res.json({
          cat: $('h1').text()
      });
    }
  })
});var server = app.listen(3000, function() {
  console.log('listening at 3000');
});

とnodejs SQL操作の組み合わせ データベースへのデータの挿入、またはその他の関連操作が可能です

nodejsを使用してWebページを作成し、ルーティング機能を実装します

npmを使用してexpressを導入します

web.jsを作成します

var express = require('express');var app = express();//  主页输出 "Hello World"app.get('/', function (req, res) {
   console.log("主页 GET 请求");
   res.send('Hello GET');
})//  POST 请求app.post('/', function (req, res) {
   console.log("主页 POST 请求");
   res.send('Hello POST');
})//  /del_user 页面响应app.get('/del_user', function (req, res) {
   console.log("/del_user 响应 DELETE 请求");
   res.send('删除页面');
})//  /list_user 页面 GET 请求app.get('/list_user', function (req, res) {
   console.log("/list_user GET 请求");
   res.send('用户列表页面');
})// 对页面 abcd, abxcd, ab123cd, 等响应 GET 请求app.get('/ab*cd', function(req, res) {   
   console.log("/ab*cd GET 请求");
   res.send('正则匹配');
})var server = app.listen(8081, function () {

  var host = server.address().address  var port = server.address().port

  console.log("应用实例,访问地址为 http://%s:%s", host, port)

})

127.0.0.1:8081 にアクセスして応答ページにアクセスするか、

データベース関連操作のパッケージ

クリックしてパッケージ ファイルをダウンロードします

まず使用方法を確認してください

        db.select({            table: '数据表',            where: '字段名称='查询条件',
            success: function (result) {
                   //查询成功之后相关操作
                }
                ,})

選択してください例として
sql:

exports.select = function(obj){
    if(!obj){
        log('对象不存在');        return;
    }    if(!obj.hasOwnProperty('field')){
        obj.field ="*";
    }    var Sql = 'SELECT '+obj.field+' FROM '+obj.table ;    if(obj.hasOwnProperty('where')){
        Sql+=' WHERE '+obj.where;
    }    if(obj.hasOwnProperty('limit')){
        Sql+=' LIMIT '+obj.limit;
    }    // console.log(Sql);
    db_query(Sql,obj);
};
を作成する

sql:

function db_query(Sql,obj){
    var db_client=mysql.createClient(config.dbinfo);
    db_client.query(Sql,function(err,data){        if(err){            if(obj.error){                if(obj.hasOwnProperty('error')){
                    obj.error(err);
                }
            }else{
                log('数据库出错:' + err.message);
            }
        }else{            if(obj.hasOwnProperty('success')){
                obj.success(data);
            }
        }        if(obj.hasOwnProperty('callback')){
            obj.callback(err,data);
        }
    });
    db_client.end();
}
を実行する

引用方法パッケージ化されたjsファイル

    var db = require('db'),

概要: データベース操作は非同期プロセスです。これにより、nodejsの作業効率が大幅に向上し、同時に非同期サンプルを分析できます

//代码示例3//注意还是那个Add,精髓也在这里,随后说到function Add(a, b){
    return a+b;
}//LazyAdd改变了,多了一个参数cbfunction LazyAdd(a, cb){
    return function(b){
        cb(a, b);
    }
}//将Add传给形参cbvar result = LazyAdd(1, Add)// 这个时候去做一些其他的程序,等条件成立之后再去执行result = result(2); // => 3

nodejsがhttp経由でphpにデータを送信する方法

function requestKj(number) {
    var postData = JSON.stringify(number);    var option = {
        host: 网址,
        path: 地址,
        method: 'POST',
        headers: {            "Content-Type": 'application/json',            "Content-Length": Buffer.byteLength(postData)
        }
    };    var req = http.request(option, function (res) {
        res.on('data', function () {
        });
        res.on('end', function () {
            console.log('成功前端给php');
        });
    });
    req.write(postData);
    req.end();
    setTimeout(function () {
        yuegengxin(number);
    },1000)
}

php側がnodejsから送信された情報を受信する方法

    public function nodejs_get_data(){
        $data= json_decode(file_get_contents('php://input'),true);        //对$data数据的相关操作
    }

まとめ

nodejsはまだ公開されています氷山へ 片隅には学ぶべきことがたくさんあります。

nidejs コレクション API デモ

nodejs マスター ブログ チュートリアル

以上が基本的なnodejsの操作方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。