Les plug-ins Nodejs incluent : "node-xlsx", nodemailer, "node-readbility", connect, "express-session", "basic-auth", bcryptjs, puppeteer, nightmare, etc.
L'environnement d'exploitation de ce tutoriel : système windows7, nodejs version 12.19.0, ordinateur DELL G3.
1. Node-xlsx lit et écrit Excel
L'importation et l'exportation d'Excel sont un problème qui se produit dans de nombreux systèmes, et NodeJS ne fait pas exception. lecture et écriture de fichiers Excel
Dans NodeJS, pour réaliser la lecture et l'écriture de fichiers, nous utilisons l'outil tiers module node-xlsx. Ce module prend en charge à la fois le format Excel 2003 (.xls) et le format Excel 2007 (. . Obtenez le fichier Excel
cnpm install node-xlsx --save
Le code ci-dessus a terminé l'opération de lecture du fichier Excel à ce moment, ce que nous lisons est un objet, et les informations peuvent être vues dans la console
Opération d'écriture dans Excel
Maintenant, nous allons montrer comment lire les informations d'une table dans la base de données et les enregistrer sur l'ordinateur local. Le code est le suivant
const xlsx=require('node-xlsx');const DBUtil=require('./utils/DBUtil.js');const fs=require('fs');const path=require('path');function readExcel(path){ var excel=xlsx.parse(path); return excel;}var obj=readExcel(path.join(__dirname,"./files/studentinfo.xls"));console.log(obj[0].data);
Ici, nous trouvons qu'écrire sur Excel est un peu plus gênant, car ici, nous avons besoin de recombiner les résultats obtenus dans la base de données et de générer Excel
Réflexion: Et si dans le framework Express, le fichier Excel généré était le suivant pour que les utilisateurs puissent le télécharger et l'enregistrer localement ?
2. L'envoi d'e-mails par nodemailer
nodejs est également utilisé dans de nombreux scénarios pour envoyer des e-mails aux utilisateurs. Par exemple, nous voyons souvent qu'après l'inscription d'un utilisateur, des informations d'inscription seront envoyées à l'utilisateur Go. à l'adresse e-mail enregistrée. À ce stade, si nous voulons compléter cette fonction, nous devons utiliser un module tiers de nodemailer. Les étapes spécifiques sont les suivantes : Installer le module correspondant
const excel=require('node-xlsx');const fs=require('fs');const path=require('path');const DBUtil=require('./utils/DBUtil.js');function writeExcel(){ var conn=DBUtil.getConn(); conn.query("select * from studentinfo",[],(err,result)=>{ if(err){ } else{ var excelArr=[]; var headerRow=[]; for(var i in result[0]){ headerRow.push(i); } excelArr.push(headerRow); for(var i=0;i<result.length;i++){ var temp=[]; for(var j=0;j<headerRow.length;j++){ temp.push(result[i][headerRow[j]]); } excelArr.push(temp); } try { var buff=excel.build([{name:'学生信息',data:excelArr}]); fs.writeFileSync(path.join(__dirname,"./files/01.xlsx"),buff); console.log("ok"); } catch (error) { console.log(err); } } }); conn.end();}writeExcel();
Importer le module, complétez le code : Lors de la configuration du serveur d'envoi, nous pouvons utiliser un serveur tiers ou un serveur intégré : Si le contenu envoyé est remplacé par un modèle Le code ci-dessus encapsule le contenu de l'e-mail à envoyer dans un objet, puis utilise la syntaxe du modèle pour assembler les chaînes Réflexion : Pour le contenu de l'e-mail ci-dessus, nous l'écrivons dans un fichier txt externe séparé, et puis utilisez String Comment implémenter cette fonction en remplaçant l'objet ? 3. child_process peut créer des processus enfants et exécuter des scripts shell. 4. node-readbilityUn plug-in qui peut transformer le contenu d'un site Web en contenu simple. 5. connect En fait, express utilise également ce plug-in, et vous pouvez également écrire des programmes Web en utilisant connect. 6. express-sessionIl s'agit d'un plug-in qui utilise des sessions. La valeur par défaut est éternelle, ce qui est différent de Tomcat 30 minutes, vous devez donc définir le délai d'attente vous-même. 7. Le plug-in basic-auth est utilisé pour la méthode d'authentification la plus simple et est généralement utilisé pour les requêtes API. 8. Le plug-in bcryptjs (une erreur est toujours signalée lors du processus d'installation de bcrypt) est utilisé pour effectuer un traitement de hachage à l'aide du salage. 9. Collection de reptiles : (1) Exploration de pages statiques et de données API : request+cheerio/jsdom request est une bibliothèque de requêtes qui peut demander des publications et obtenir des informations. une bibliothèque d'analyse tierce à analyser, telle que cheerio. Pour les pages de rendu dynamique js, vous pouvez envisager d'utiliser jsdom, mais malheureusement, c'est synchrone et ce n'est pas un navigateur après tout. (2) Exploration de pages rendues dynamiquement puppeteer : Grâce au navigateur chromiun, les requêtes asynchrones sont très efficaces et de nombreuses API pour faire fonctionner le navigateur sont ouvertes, ce qui est très pratique. : L'API est très pratique à utiliser. Utilisez le navigateur en électronique Bien que je ne l'ai jamais utilisé, j'ai l'impression que ce n'est pas aussi flexible que le marionnettiste. : La synchronisation m'a fait renoncer à l'utiliser. Identique au sélénium. 10、moment.js Il s'agit d'une bibliothèque d'analyse de format légère. Si vous écrivez vous-même la fonction d'analyse de format, vous aurez besoin de plusieurs dizaines de lignes de code de fonction. C'est très pratique à utiliser. Pour plus de connaissances sur les nœuds, veuillez visiter : tutoriel Nodejs ! ! Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!$ cnpm install nodemailer --asve
$ yarn add nodemailer
const nodemailer=require('nodemailer');var transport = nodemailer.createTransport({
service:"qq",
auth:{
user:"365055754@qq.com",
pass:"peshapwpokgvcahe"
}});var options={
from:"365055754@qq.com",
to:"lovesnsfi@live.com",
subject:"这是一封来自nodemailer发送的邮件信息",
text:"这是一封来自nodemailer发送的邮件信息"+(new Date()).toLocaleString(),
html:"<h2>这是一封来自<u>nodemail</u>的测试邮件···</h2>"};transport.sendMail(options,(err,info)=>{
if(err){
console.log(err);
}
else{
console.log(info);
}});
{ accepted: [ 'lovesnsfi@live.com' ],
rejected: [],
envelopeTime: 221,
messageTime: 830,
messageSize: 801,
response: '250 Ok: queued as ',
envelope: { from: '365055754@qq.com', to: [ 'lovesnsfi@live.com' ] },
messageId: '<2fbef9f1-1041-fd59-1111-0b987e8d81da@qq.com>' }