vite.vonfig.js 中会配置别名, 简易版module.exports直接到处别名
const path = require ( "path" ) ;
module. exports = {
resolve : {
alias : {
"@" : path. resolve ( __dirname, "./src" ) ,
} ,
} ,
} ;
项目跟目录下建立一个index.js文件,使用nodejs启动这个文件,在浏览器访问这个服务localhost:5173
const Koa = require ( "koa" ) ;
const fs = require ( "fs" ) ;
const path = require ( "path" ) ;
const viteConfig = require ( "./vite.config.js" ) ;
const aliasResolve = require ( "./aliasResolve.js" ) ;
const app = new Koa ( ) ;
app. use ( async ( ctx ) => {
if ( ctx. request. url === "/" ) {
const html = await fs. promises. readFile ( "index.html" ) ;
ctx. response. body = html;
ctx. response. set ( "Content-Type" , "text/html" ) ;
}
if ( ctx. request. url. endsWith ( ".js" ) ) {
const mainJs = fs. readFileSync (
path. resolve ( __dirname, "." + ctx. request. url)
) ;
const lastJsContent = aliasResolve (
viteConfig. resolve. alias,
mainJs. toString ( )
) ;
ctx. response. body = lastJsContent;
ctx. response. set ( "Content-Type" , "text/javascript" ) ;
}
} ) ;
app. listen ( 5173 , ( ) => {
console. log ( "running vite dev server is port 5173" ) ;
} ) ;
main.js 文件
import '@/tests.js'
aliasResolve.js 别名转换函数,默认test是在src目录下放着
module. exports = function ( aliasConfig, jsContent ) {
const entries = Object. entries ( aliasConfig) ;
let lastJsContent = jsContent;
entries. forEach ( ( entrie ) => {
const [ alias, path] = entrie;
const index = path. indexOf ( "/src" ) ;
const relPath = path. slice ( index, path. length) ;
lastJsContent = jsContent. replace ( alias, relPath) ;
} ) ;
return lastJsContent;
} ;
index.html 文件
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" />
< meta http-equiv = " X-UA-Compatible" content = " IE=edge" />
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" />
< title> Document</ title>
</ head>
< body>
vite dev server 解释识别.vue 文件
< script src = " ./src/main.js" type = " module" > </ script>
</ body>
</ html>
如此,简易版本vue中的别名在项目中如何去解析,加载分析完毕,欢迎大家一起交流学习。