• 当前标签:Node.js

程序开发 deepin v15.10.1 stable版安装nodejs

curl -sSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add - echo "deb https://mirrors.tuna.tsinghua.edu.cn/nodesource/deb_10.x stretch main" | sudo tee /etc/apt/sources.list.d/nodesource.list echo "deb-src https://mirrors.tuna.tsinghua.edu.cn/nodesource/deb_10.x stretch main" | sudo tee -a /etc/apt/sources.list.d/nodesource.list sudo apt-get update sudo apt-get install nodejs 来自: @name2001

2019-06-13 19:34:59 231 0 0
阅读详情

程序开发 Node.js获取svg验证码不刷新解决方案

在部署服务器后,使用 svg-captcha 插件获取svg验证码会多次请求不刷新,这里只要在请求的参数data中添加一个不重复的字符串就可以,比如:时间戳。 getCode () {       this.$api.get(this.$root.urlPath.MJK + '/code', {code:Date.now()},res => {  // 这里是发送当前时间         console.log(res.data)         if (res.data.code === 200) {           this.code = res.data.data.img         } else {           this.$message.error(res.data.msg)         }       })     },  

2018-06-29 17:44:57 125 0 0
阅读详情

程序开发 Node.js fs.mkdirSync()方法创建目录报错

使用fs.mkdirSync() 创建目录一直在报错,莫名其妙的,网上找了半天,发现是不能一次建多级目录。 比如我要建的路径为 upload/2018/5 if (!fs.existsSync('uploads/2018/5')){       fs.mkdirSync(uploads/2018/5') } 这样肯定报错,fs.mkdirSync() 只支持一级一级的创建 if (!fs.existsSync('uploads/2018')){        fs.mkdirSync('uploads/2018') } if (!fs.existsSync('uploads/2018/5')){       fs.mkdirSync(uploads/2018/5') }

2018-05-13 23:09:29 194 0 0
阅读详情

程序开发 Node.js 制作验证码API

利用 svg-captcha 插件制作验证码,首先安装 svg-captcha 插件: npm i --save svg-captcha 然后在建一个 svgCaptcha.js 文件,文件内容: // 获取验证码 const svgCaptcha = require('svg-captcha'); module.exports = callback => {     let codeConfig = {         size: 5,// 验证码长度         ignoreChars: '0o1i', // 验证码字符中排除 0o1i         noise: 2, // 干扰线条的数量         height: 45     }     let captcha = svgCaptcha.create(codeConfig);     let sessionCaptcha = captcha.text.toLowerCase(); //存session用于验证接口获取文字码     let codeData = {         img:captcha.data     }     callback(sessionCaptcha,codeData); } callback返回验证码 (sessionCaptcha) 和验证码svg图片 (codeData) ; 使用在需要的API文件里: const getCode = require('../model/svgCaptcha.js'); // 获取验证码 exports.getCode = (req, res, next) => {     getCode(function (code,img) {         //存session用于验证接口获取文字码         req.session.captcha = code;         let data = {};         if (code && img){             data = {                 code: 200,                 msg: '获取成功',                 data: img             }         } else {             data = {                 code: 400,                 msg: '获取失败',                 data: img             }         }         res.json(data);     }) }

2018-05-06 14:26:00 111 0 0
阅读详情

程序开发 Node.js获取当前操作系统的数据参数

利用nodejs可以快速查看当前电脑的一些参数,具体的需要引入内置的os模块,至于具体的nodejs安装使用的话可以参考nodejs官网。 const os=require('os'); 获取cpu(处理器架构) const arch=os.arch(); console.log(arch); 获取cpu信息 const cpus=os.cpus(); console.log(cpus); 字节顺序 高位优先返回BE,低位优先的返回LE const endianness=os.endianness(); console.log(endianness); 空闲内存字节 const freemem=os.freemem() console.log(freemem); 当前登录用户的根目录 const homedir=os.homedir(); console.log(homedir); 操作系统主机名 const hostname=os.hostname() console.log(hostname); 系统最近5、10、15分钟的平均负载,这是一个针对linux或unix的统计,windows下始终返回[0,0,0] const loadavg=os.loadavg(); console.log(loadavg); 网络配置列表 const networkInterfaces=os.networkInterfaces(); console.log(networkInterfaces); 操作系统类型,返回值有'darwin', 'freebsd', 'linux', 'sunos' , 'win32' const platform=os.platform(); console.log(platform); 操作系统版本 const release=os.release(); console.log(release); 操作系统临时文件的默认目录 const  tmpdir=os.tmpdir() console.log(tmpdir); 系统总内存 const totalmem=os.totalmem() console.log(totalmem); 操作系统名称,基于linux的返回linux,基于苹果的返回Darwin,基于windows的返回Windows_NT const type=os.type(); console.log(type); 计算机正常运行时间 const uptime=os.uptime(); console.log(uptime); 最后配上在本地测试的数据结果。

2018-05-05 14:02:43 147 0 0
阅读详情

程序开发 node.js在宝塔面板的PM2中安装的模块引入方式

在宝塔面板中安装全局模块,引用时不能直接require('包名')。 这里需要以绝对路径来引入,如: const url = '/www/server/nvm/versions/node/v8.11.1/lib/node_modules/'; var express = require(url + 'express'); 其中v8.11.1为当前node版本号,不同版本直接安装的模块不通用,当然你可以直接找到你想引入那个包,直接引入就行了,或者直接shell安装到项目目录里面。

2018-05-03 10:08:27 755 0 1
阅读详情

程序开发 Node.js 无刷新

此项目需要安装Node.js和npm,还有express插件、body-parser插件。deepin下安装请参考Nodejs 中 GET 传输数据 服务器端文件index.js: const express = require('express') const bodyParser = require('body-parser') // var 表示的是变量 值是可以改变的 // const表示常量一旦赋值就不能再改变 // cont是新特性 可以node中使用暂时不要在浏览器中使用 const app = express() app.use(express.static('public')) app.use(bodyParser.urlencoded({extended:false})) app.post('/user/login',function(req,res){     var phone = req.body.phone     var password = req.body.password     var result = password == '123456'?'登录成功':'密码错误'     res.send(result) }) app.listen(3000,()=>{     console.log('服务器运行了') }) // (a,b)=>{ //   return a +b   // } //  都是匿名函数 // function(a,b){ //     return a + b // } html: <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <meta http-equiv="X-UA-Compatible" content="ie=edge">     <title>无刷新</title> </head> <body>    <form action="/user/login" method="post" target="result">      <input type="tel" name="phone" placeholder="请输入手机号">      <input type="password" name="password" placeholder="请输入密码">      <input type="submit" value="登录">    </form>     <iframe src="#" frameborder="0" id='result' name="result"></iframe>     <!-- 让表单刷新iframe而不是整个页面 从而达到无刷新的效果 -->     <script src="js/index.js"></script> </body> </html> 客户端index.js var iframe = document.querySelector('#result') iframe.onload = function(){     // contentWindow属性指定的iframe或者frame所在的window对象     var result = iframe.contentWindow.document.body.innerText     alert(result) }

2017-08-09 19:20:13 66 0 0
阅读详情

程序开发 Nodejs 中 POST 传输数据

上图是下面将要使用的项目文件位置 index.js var express = require('express') var bodyParser = require('body-parser') var app = express() app.use(express.static('public')) // app对象的use方法表示使用中间件  // 中间件是插入在请求响应过程中的一个处理程序 // 可以在处理请求之前预先处理数据或处理请求之后进行清理 // bodyParser的作用是将浏览器发送的请求转换为body对象  // 供程序处理请求时使用 // urlencoded 处理url的编码数据 通常是表单提交数据 // extended:true表示使用一种更强大的url编码格式 可以处理比较复杂的数据 app.use(bodyParser.urlencoded({extended:false})) // post表示处理一个由浏览器发过来的post请求 // /user表示只处理发送到这个url的请求 // 第二个参数function请求处理函数 // req表示所有浏览器发送请求数据及相关信息(请求) // res表示将要发送给浏览器的所有数据(响应) app.post('/user',function(req,res){     // post请求的数据不再查询字符串里      // 而在请求体中 所以需要从请求体中获取数据     // 请求体中获取数据借助于body-parser模块     // 安装body-parser的方法     // 在命令行中运行(切换到当前的文件夹)     // npm install body-parser --save     // npm  node package manager 是Node.js包管理工具     // install可以简写i     // body-parser 要安装的模块     // --save 将安装的模块包的名字保存到package.json文件中     var name = req.body.petname     var password = req.body.password    res.status(200).send('<strong>你提交的数据是</strong>' + name + '<br>' + password) }) app.listen(3000,function(){     console.log('服务器运行了') }) index.html <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <meta http-equiv="X-UA-Compatible" content="ie=edge">     <title>Document</title>     <style>         *{             box-sizing: border-box;         }         body{             margin: 0;         }         header{             background-color: #f93;             color: white;             height: 44px;             line-height: 44px;             text-align: center;             font-size: 18px;         }         form{             padding: 10px;         }         input,select{             display: block;             width:100%;             margin: 5px;             height: 40px;             padding: 10px;             font-size: 0.9rem;             border:1px solid silver;             /* 去掉chrome的特殊外观 */              /* -webkit-appearance: none;  */         }         .radio-group label{            display: inline-block;            width:90px;            margin: 5px auto;            height: 40px;            padding: 12px;            background-image: url(images/unselect.png);            background-size: 22px;            background-position: left center;            background-repeat: no-repeat;            font-size: 0.9rem;         }         input[type=radio]:checked+label{              background-image: url(images/select.png);         }         .radio-group input{              display: none;         }         input[type=submit]{             border-color: #e82;             background-color: #e82;             color: white;             font-size: 0.9rem;             line-height: 0.9rem;             margin-top: 15px;         }         option{             height: 36px;             display: inline-block;             line-height: 36px;             padding-top:10px;         }     </style> </head> <body>     <header>注册</header>     <form id="register" action="/user" method="POST" target="_blank">         <input type="text" name="petname" autofocus autocomplete="on"  placeholder="请输入用户名"> <br>         <!-- autofocus会让输入焦点出现指定的输入框中 -->         <!-- pattern="[\u4e00-\u9fa5a-zA-Z0-9]{2,16}"  -->         <!-- autocomplete 会记住用户之前输入的值 当双击输入时 会把之前记住的值列出来供用户选择 -->         <!-- required要求用户提交表单时必须填写 -->         <!-- 使用正则表达式 -->         <!-- []表示允许的字符范围         a-z 表示允许26个小写字母         0-9表示允许数字         \u4e00-\u9fa5a允许汉字         {2,16}最少要求2个字符 最多16个字符 -->         <input type="password" name="password" placeholder="请输入密码">         <input type="password"  placeholder="请再次输入密码">         <!-- 如果两个普通input的name相同会导致同一个名字提交两个数据 -->         <div class="radio-group">             <input type="radio" name="isMale" id="male" checked>             <label for="male">先生</label>             <input type="radio" name="isMale" id="famale">             <label for="famale">先生</label>         </div>         <select name="course">             <option value="HTML5">HTML5</option>             <option value="CSS">CSS</option>             <option value="JavaScript">JavaScript</option>         </select>         <!-- <input type="submit" value="提交"> -->     </form>     <input type="submit" form="register" name="test" placeholder="会提交吗" formnovalidate>     <!--     使用form属性可以将表单元素放在表单外面 去提交 form属性的值必须是另一个form的id     formnovalidate 可以单独在未验证状态下直接提交表单     formmethod     formtarget     formaction 都可以单独控制      --> </body> </html>

2017-08-08 19:50:45 64 0 0
阅读详情
  • 1
  • 2
前往