如何利用node解决seo问题

如何利用node解决seo问题,第1张

NodeJS在SEO中的应用:快速采集分析页面

一、安装

网上有很多的教程,下载到>

然后配置神器Sublime开始使用。

为Sublime添加实时调试运行,打开Sublime-》Tools-》Build System-》New Build System

在新打开的文件中写入下面的代码

然后保存为NodeJSsublime-build

新建一个采集js文件,设为NodeJS进行运行调试。

二、注意

在nodejs里面需要require(库名)的方式来引用一些外部的库,这些外部的库安装NodeJS的时候,已经放在C盘的programfiles下面了。但是直接require是无效的。

因为NodeJS提倡的是自己的代码用自己的库,所以还需要把库复制到采集js这个文件下面。

引用的时候可以通过npm link 库名的方式,来把系统C盘的库引用到我们的项目下面。

三、直接使用了

注意require的库必须使用npm link 库名克隆到本地,或者自己下载包放到采集js下面的node_modules目录下面,如果 没有这个目录,自己创建。

其中:

使用Cheerio要取页面的H1标题就简单了

var title=$(‘#article_details h1 a’)text()trim();//读取Div下面的H1标签文本。

有没有jQuery强到爆的感觉。想分析页面什么的,还用正则吗不用了。还用分析吗不用了。找个大的Div,直接就读出来了。C#当然也可以用Htmp Agility pack来解析Dom。

但是为此我要新建一个项目,运行,调试,用NodeJS的话,在Sublime里面按Ctrl+B直接运行,可以马上看到效果。而且可以放到服务端。放到我的服务器上去。诸多好处也不大好形容。如果会点JS代码的话,上手应该非常快。

第一步,用node输出一个hello world

    var );


大部分的node教程在这里会告诉你,我们很容易的建立的一个服务器。但是在实际使我们通常使用的是express(fk,难道Node必须要用express吗?自己实现一个Web应用框架真的很难吗?)其实并不是。
那么既然打算自己写我们首先要知道我们要做哪些事情。 1路由或者智能路由 2静态文件输出 3session/cookie 4模版渲染 5数据库处理 6文件上传
第二步,路由
路由好高大上的名字,它是干啥的?url对应具体方法就是它该做的事情。 那么我们为什么不让url对应xxx文件的xx方法。 例如:/user/login能不能自动对应到userjs的login方法上。实现起来很难么?其实只需要几句代码
   

 var fs = require("fs"); 
    moduleexports=function(req,res){ 
        var query=reqquery; 
        var urlPares=requrlPares; 
        var pathname=urlParespathname; 
        var arr=pathnamesplit("/"); 
        reqarr=arr; 
        //start 这段代码处理默认行为。可以先忽略 
        if(arrlength==0||arrlength==1){ 
            arr=["","index","index"]; 
        }else if(arrlength==2){ 
            arrpush("index"); 
        } 
        if(arr[1]==""){ 
            arr[1]="index"; 
        } 
        if(arr[2]==""){ 
            arr[2]="index"; 
        } 
        //end 这段代码处理默认行为。可以先忽略 
        if (fsexistsSync(APP_PATH+'/controller/'+arr[1]+'js')){ 
            var controller=require('/controller/'+arr[1]); 
            if(controller[arr[2]]){ 
                controller[arr[2]](req,res); 
            }else{ 
                reswriteHead(404,{'Content-Type': 'text/plain' }); 
                resend("你访问的控制器不存在指定方法"); 
            } 
        }else{ 
            reswriteHead(404,{'Content-Type': 'text/plain' }); 
            resend("你访问的路径不存在"); 
        } 
    }


通过fs判断文件是否存在。然后去require它就行了。APP_PATH是个全局变量表示程序入口的路径。
第三步,静态文件输出
静态文件输出我们需要一个库MIME
  

  var url = require("url"); 
    var fs = require("fs"); 
    var mime = require('mime'); 
    / 
      [[检测是否为静态资源]] 
      @param   {Object}   req [[Description]] 
      @param   {[[Type]]} res [[Description]] 
      @returns {bool} [[Description]] 
     / 
    moduleexports = function (req, res) { 
        //正则表达式检测文件后缀 
        var url_resource_reg = /\(html|htm|gif|jpg|jpeg|bmp|webp|htc|swf|png|ico|txt|js|css)/; 
        if (!url_resource_regtest(requrl)) { 
            return false; 
        } 
        var urlPares = urlparse(requrl); 
        var pathname = urlParespathname; 
        var fileUrl = APP_PATH + "/static" + pathname; 
        if (fsexistsSync(fileUrl)) { 
            var contentType = mimelookup(fileUrl); 
            ressetHeader('Content-Type', contentType || "text/plain"); 
            var fileStream = fscreateReadStream(fileUrl); 
            fileStreampipe(res); 
            fileStreamon('end', function () { 
                resend(); 
            }); 
            return true; 
        } else { 
            return false; 
        } 
    } 
第四步,session/cookie
这里稍微有点。但是代码量也不多
    var sessions = {}; 
    var sessionKey = 'session_key'; 
    var EXPIRES = 30  60  1000; 
    function randString(size) { 
        var result = ''; 
        var allChar = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 
        size = size || 1; 
        while (size--) { 
            result += allCharcharAt(rand(0, allCharlength - 1)); 
        } 
        return result; 
    } 
    var generate = function () { 
        var session = {}; 
        sessionid = Datenow() + randString(12); 
        sessioncookies = { 
            expire: Datenow() + EXPIRES 
        } 
        sessions[sessionid] = session; 
        return session; 
    } 
    var parseCookie= function (cookie) { 
        var cookies = {}; 
        if (!cookie) { 
            return cookies; 
        } 
        var list = cookiesplit(";"); 
        for (var i = 0; i < listlength; i++) { 
            var pair = list[i]split("="); 
            cookies[pair[0]trim()] = pair[1]; 
        } 
        return cookies; 
    } 
    var serializeCookies = function (cookies) { 
        var arr = []; 
        for (var key in cookies) { 
            arrpush(serialize(key, cookies[key])); 
        } 
        return arr; 
    } 
    var serialize = function (name, value, option) { 
        var pairs = [name + '=' + encodeURI(value)]; 
        //设置cookie默认共用"/"路径 
        option = option || { 
            path: "/" 
        }; 
        if (optionmaxAge) pairspush('Max-Age=' + optionmaxAge); 
        if (optiondomain) pairspush('Domain=' + optiondomain); 
        if (optionpath) pairspush('Path=' + optionpath); 
        if (optionexpires) pairspush('Expires=' + optionexpires); 
        if (option>    }

第五步,模版渲染

这是最简单的。

第六步,数据库处理

这里可以是用一些ORM框架。

第七步,文件上传,post

第八步,就是你把上面的代码组织起来。

1安装NodeJS 1编译环境 源代码编译器,通常 Unix/Linux平台都自带了C++的编译器(GCC/G++)。如果没有,请通过当前发行版的软件包安装工具安装make,g++这些编译工具。 Debian/Ubuntu下的工具是apt-get RedHat/centOS下通过yum命令 Mac OS X下


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/13366151.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-22
下一篇 2023-07-22

发表评论

登录后才能评论

评论列表(0条)

保存