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/logger.js'
import '../src/init/redis.js'
@ -28,20 +29,35 @@ for (const flie of flies) {
console.log('flie.name', flie.name, '识别错误')
continue
}
/**
*
*/
const plugins = readdirSync(join(dir, flie.name), {
withFileTypes: true
}).filter(flie => flie.isFile())
for (const plugin of plugins) {
/**
*
*/
if (/^(routes.jsx|routes.tsx)$/.test(plugin.name)) {
const routes = (await import(`file://${join(plugin.path, plugin.name)}`))
?.default
if (!routes) continue
/**
*
*/
if (Array.isArray(routes)) {
/**
*
*/
for (const item of routes) {
const url = `/${flie.name}${item.url}`
console.log(`http://127.0.0.1:${Port}${url}`)
const options = item?.options ?? {}
/**
*
*/
router.get(url, ctx => {
const options = item?.options ?? {}
const HTML = Com.create(item.element, {
...options,
html_head: options?.html_head ?? '',
@ -68,5 +84,5 @@ app.use(router.routes())
// listen 8000
app.listen(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/logger.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 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'
]
/**
*
* @param basePath
* @param customExtensions
* @deprecated
* @param basePath
*/
export function createRequire(basePath: string) {
return cRequire(basePath)
}
/**
*
* @param path
* @returns
*/
export function createRequire(
basePath: string,
customExtensions = CustomExtensions
) {
const require = cRequire(basePath)
for (const ext of customExtensions) {
require.extensions[ext] = (module, filename) => {
module.exports = path.resolve(filename)
}
export function require(path: string) {
return (url: string) => {
return cRequire(url)(path)
}
return require
}