


Utilisation de node vue.js pour implémenter SPA application_node.js
Besoins des entreprises
Récemment, l'entreprise a demandé le développement d'une version web de l'application. Étant donné que l'application est orientée contenu et dispose d'un module de chat, elle n'est pas très adaptée au développement général multipage, et elle est principalement destinée à la navigation mobile. . En termes de vitesse de chargement ou d'expérience utilisateur, ils sont tous assez durs. Après avoir recherché de nombreux frameworks et modèles, j'ai finalement reconstitué quelque chose comme ceci.
Serveur
Il ne fait aucun doute que l'utilisation de node, l'utilisation de TypeScript peuvent vérifier efficacement les erreurs lors du codage, et il n'y a aucune pression pour écrire le serveur dans un langage fortement typé.
#app.ts 只贴重要代码 var webpack = require('webpack') var webpackDevMiddleware = require('webpack-dev-middleware') var WebpackConfig = require('./webpack.config') import * as index from "./routes/index"; import * as foo from "./routes/foo"; import * as bar from "./routes/bar"; var app = express(); //启动服务的时候 打包并监听客户端用到的文件,webpackDevMiddleware是开发模式,他会打包js在内存里面,你改了文件,它也会重新打包 app.use(webpackDevMiddleware(webpack(WebpackConfig), { publicPath: '/__build__/', stats: { colors: true } })); //一般的配置项 app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); app.set('view options', { layout: false }); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); app.use(methodOverride()); app.use(express.static(__dirname + '/public')); var env = process.env.NODE_ENV || 'development'; if (env === 'development') { app.use(errorHandler()); } //路由配置 app.get('/', index.index); app.get('/foo', foo.index); app.get('/bar', bar.index); app.listen(3000, function(){ console.log("Demo Express server listening on port %d in %s mode", 3000, app.settings.env); }); export var App = app;
Page de rendu côté serveur
#index.ts import express = require("express") import vueServer = require("vue-server") //服务端渲染vue的插件 var Vue = new vueServer.renderer(); //创建一个服务端的vue export function index(req: express.Request, res: express.Response) { //创建一个组件 var vm = new Vue({ template: ` <p>This is index!</p> ` }); //等待html渲染完成,再返回给浏览器 vueServer.htmlReady是vue-server的自带事件 vm.$on('vueServer.htmlReady', function(html:string) { //这里用的是ejs模板 可以把需要用到的数据设置成window下的全局变量,方便客户端的js访问。 res.render('layout',{server_html:html,server_data:'window.cm_data = {name:"张三"}'}) }); };
#layout.ejs 访问这个SPA的所有url返回的都是这个页面 <meta>标签都可以动态设置,只要传参数进来就可以 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Vue Router Example</title> <style> .v-link-active { color: red; } </style> <script> //定义一些前端需要用到的全局属性,文章ID或用户信息什么的 //index.ts中传过来的是 window.cm_data = {name:"张三"} //前端就能访问到了 <%-server_data%> </script> </head> <body> //这里的id是前端需要用到的一个标识 <div id="app"> <h1>Hello App!</h1> <p> <a v-link="{ path: '/foo' }">Go to Foo</a> <a v-link="{ path: '/bar' }">Go to Bar</a> </p> //router-view是客户端vue-router需要解析的dom //server_html是根据访问url地址生成的html,是做SEO的重点,不加载下面的app.js也可以看到内容 <router-view> <%-server_html%> </router-view> </div> //webpack打包好的js,主要是路由配置 <script src="/__build__/app.js"></script> </body> </html>
Client
#app.js 这个是/__build__/app.js,可以用es6编写,webpack会转换的 import Vue from './vue.min' //客户端的vue.js import VueRouter from './vue-router.min' //vue的路由插件,配合webpack可以很简单实现懒加载 //懒加载路由 只有访问这个路由才会加载js import Foo from 'bundle?lazy!../../components/foo' //配合webpack的bundle-loader,轻松实现懒加载 import Bar from 'bundle?lazy!../../components/bar' import Index from 'bundle?lazy!../../components/index' var App = Vue.extend({}) Vue.use(VueRouter) var router = new VueRouter({ //这里要好好说一下,一定要设置html5模式,不然前后端URL不统一会发生问题 //比如访问 http://localhost:3000/ 服务端定义是访问index.ts这个路由文件 //如果不是html5模式的话,经过客户端js运行之后会变成http://localhost:3000/#!/ //在比如直接浏览器输入 http://localhost:3000/foo 服务端定义是访问.ts这个路由文件 //如果不是html5模式的话,经过客户端js运行之后会变成 http://localhost:3000/foo/#!/ //设置了html5模式后,加载完js后不会加上#!这2个类似锚点的字符,实现前后端路由统一如果用户刷新浏览器的话,服务端也能渲染出相应的页面。 history: true, //html5模式 去掉锚点 saveScrollPosition: true //记住页面的滚动位置 html5模式适用 }) //定义路由,要和服务端路由路径定义的一样 router.map({ '/' : { component: Index //前端路由定义, }, '/foo': { component: Foo }, '/bar': { component: Bar } }) //启动APP router.start(App, '#app')
Quartier à améliorer
Les modèles unifiés front-end et back-end ont trouvé un moyen de séparer le HTML. Le côté nœud utilise la méthode fs.readFileSync pour l'obtenir, et le client utilise le chargeur brut de Webpack pour obtenir le contenu HTML
Adresse du code source

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Comment supprimer un nœud avec nvm : 1. Téléchargez « nvm-setup.zip » et installez-le sur le lecteur C ; 2. Configurez les variables d'environnement et vérifiez le numéro de version via la commande « nvm -v » 3. Utilisez la commande « nvm » ; install" commande Installer le nœud ; 4. Supprimez le nœud installé via la commande "nvm uninstall".

Comment gérer le téléchargement de fichiers ? L'article suivant vous expliquera comment utiliser Express pour gérer les téléchargements de fichiers dans le projet de nœud. J'espère qu'il vous sera utile !

Cet article partagera avec vous l'outil de gestion de processus de Node "pm2" et expliquera pourquoi pm2 est nécessaire, comment installer et utiliser pm2, j'espère qu'il sera utile à tout le monde !

Explication détaillée et guide d'installation pour les nœuds de pignon Cet article introduira l'écosystème de pignon en détail - nœuds PI, un rôle clé dans l'écosystème de pignon et fournir des étapes complètes pour l'installation et la configuration. Après le lancement du réseau de test de la blockchain pèse, les nœuds PI sont devenus une partie importante de nombreux pionniers participant activement aux tests, se préparant à la prochaine version du réseau principal. Si vous ne connaissez pas encore Pinetwork, veuillez vous référer à ce qu'est Picoin? Quel est le prix de l'inscription? PI Utilisation, exploitation minière et sécurité. Qu'est-ce que Pinetwork? Le projet Pinetwork a commencé en 2019 et possède sa pièce exclusive de crypto-monnaie PI. Le projet vise à en créer un que tout le monde peut participer

Comment empaqueter le fichier exécutable nodejs avec pkg ? L'article suivant vous expliquera comment utiliser pkg pour empaqueter un projet Node dans un fichier exécutable. J'espère qu'il vous sera utile !

L'authentification est l'une des parties les plus importantes de toute application Web. Ce didacticiel traite des systèmes d'authentification basés sur des jetons et de leurs différences par rapport aux systèmes de connexion traditionnels. À la fin de ce didacticiel, vous verrez une démo entièrement fonctionnelle écrite en Angular et Node.js. Systèmes d'authentification traditionnels Avant de passer aux systèmes d'authentification basés sur des jetons, examinons les systèmes d'authentification traditionnels. L'utilisateur fournit son nom d'utilisateur et son mot de passe dans le formulaire de connexion et clique sur Connexion. Après avoir effectué la demande, authentifiez l'utilisateur sur le backend en interrogeant la base de données. Si la demande est valide, une session est créée à l'aide des informations utilisateur obtenues à partir de la base de données et les informations de session sont renvoyées dans l'en-tête de réponse afin que l'ID de session soit stocké dans le navigateur. Donne accès aux applications soumises à

Qu'est-ce qu'un système d'authentification unique ? Comment l'implémenter en utilisant nodejs ? L'article suivant vous présentera comment utiliser Node pour implémenter un système d'authentification unique. J'espère qu'il vous sera utile !

npm node gyp a échoué car les versions de « node-gyp.js » et « Node.js » ne correspondaient pas. La solution : 1. Videz le cache du nœud via « npm cache clean -f » 2. Via « npm install - ». g n" Installez le module n ; 3. Installez la version "node v12.21.0" via la commande "n v12.21.0".
