update: 支持柯里化

This commit is contained in:
ningmengchongshui 2024-06-16 17:59:02 +08:00
parent 2c7692ddc3
commit d70cc61570
4 changed files with 76 additions and 51 deletions

View File

@ -1,3 +1,4 @@
import '../src/init/require.js'
import '../src/init/config.js' import '../src/init/config.js'
import '../src/init/logger.js' import '../src/init/logger.js'
import '../src/init/redis.js' import '../src/init/redis.js'
@ -28,20 +29,35 @@ for (const flie of flies) {
console.log('flie.name', flie.name, '识别错误') console.log('flie.name', flie.name, '识别错误')
continue continue
} }
/**
*
*/
const plugins = readdirSync(join(dir, flie.name), { const plugins = readdirSync(join(dir, flie.name), {
withFileTypes: true withFileTypes: true
}).filter(flie => flie.isFile()) }).filter(flie => flie.isFile())
for (const plugin of plugins) { for (const plugin of plugins) {
/**
*
*/
if (/^(routes.jsx|routes.tsx)$/.test(plugin.name)) { if (/^(routes.jsx|routes.tsx)$/.test(plugin.name)) {
const routes = (await import(`file://${join(plugin.path, plugin.name)}`)) const routes = (await import(`file://${join(plugin.path, plugin.name)}`))
?.default ?.default
if (!routes) continue if (!routes) continue
/**
*
*/
if (Array.isArray(routes)) { if (Array.isArray(routes)) {
/**
*
*/
for (const item of routes) { for (const item of routes) {
const url = `/${flie.name}${item.url}` const url = `/${flie.name}${item.url}`
console.log(`http://127.0.0.1:${Port}${url}`) console.log(`http://127.0.0.1:${Port}${url}`)
const options = item?.options ?? {} /**
*
*/
router.get(url, ctx => { router.get(url, ctx => {
const options = item?.options ?? {}
const HTML = Com.create(item.element, { const HTML = Com.create(item.element, {
...options, ...options,
html_head: options?.html_head ?? '', html_head: options?.html_head ?? '',
@ -68,5 +84,5 @@ app.use(router.routes())
// listen 8000 // listen 8000
app.listen(Port, () => { app.listen(Port, () => {
console.log('Server is running on port ' + Port) console.log('Server is running on port ' + Port)
console.log('自行调整默认浏览器尺寸 800 X 1280 100%') console.log('默认浏览器尺寸 800 X 1280 100%')
}) })

View File

@ -1,3 +1,4 @@
import './init/require.js'
import './init/config.js' import './init/config.js'
import './init/logger.js' import './init/logger.js'
import './init/redis.js' import './init/redis.js'

45
src/init/require.ts Normal file
View File

@ -0,0 +1,45 @@
import { createRequire } from 'module'
import path from 'path'
const require = createRequire(import.meta.url)
/**
*
*/
const CustomExtensions = [
'.css',
'.apng',
'.png',
'.jpg',
'.jpeg',
'.jfif',
'.pjpeg',
'.pjp',
'.gif',
'.svg',
'.ico',
'.webp',
'.avif',
'.mp4',
'.webm',
'.ogg',
'.mp3',
'.wav',
'.flac',
'.aac',
'.opus',
'.mov',
'.m4a',
'.vtt',
'.woff',
'.woff2',
'.eot',
'.ttf',
'.otf'
]
/**
*
*/
for (const ext of CustomExtensions) {
require.extensions[ext] = (module, filename) => {
module.exports = path.resolve(filename)
}
}

View File

@ -1,55 +1,18 @@
import { createRequire as cRequire } from 'module' import { createRequire as cRequire } from 'module'
import path from 'path'
const CustomExtensions = [
//
'.css',
//
'.apng',
'.png',
'.jpg',
'.jpeg',
'.jfif',
'.pjpeg',
'.pjp',
'.gif',
'.svg',
'.ico',
'.webp',
'.avif',
'.mp4',
'.webm',
'.ogg',
'.mp3',
'.wav',
'.flac',
'.aac',
'.opus',
'.mov',
'.m4a',
'.vtt',
'.woff',
'.woff2',
'.eot',
'.ttf',
'.otf'
]
/** /**
* * @deprecated
* @param basePath * @param basePath
* @param customExtensions */
export function createRequire(basePath: string) {
return cRequire(basePath)
}
/**
*
* @param path
* @returns * @returns
*/ */
export function createRequire( export function require(path: string) {
basePath: string, return (url: string) => {
customExtensions = CustomExtensions return cRequire(url)(path)
) {
const require = cRequire(basePath)
for (const ext of customExtensions) {
require.extensions[ext] = (module, filename) => {
module.exports = path.resolve(filename)
} }
} }
return require
}