本博客不再更新 github:https://github.com/Mr-try 语雀:https://www […]
cnpm私有仓库搭建
参考文章 1. cnpm:告诉你为何以及如何搭建一个私有的npm仓库 2. mysqlcentos7 mysq […]
webpack多页面
背景 传统多页面项目,每个项目引入公共组件js和第三方js 方案 webpack.util.js [crayo […]
redux手动
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
function renderApp(newAppState, oldAppState = {}) { if (newAppState === oldAppState) return console.log('app') renderTitle(newAppState.title,oldAppState.title) renderContent(newAppState.content,oldAppState.content) } function renderTitle(newTitle, oldTitle = {}){ if (newTitle === oldTitle) return console.log('title') const titleDOM = document.getElementById('title') titleDOM.innerHTML = newTitle.text titleDOM.style.color= newTitle.color } function renderContent(newContent, oldContent = {}){ console.log(newContent,oldContent) if (newContent === oldContent) return console.log('content') const contentDOM = document.getElementById('content') contentDOM.innerHTML = newContent.text contentDOM.style.color= newContent.color } function stateChanger(state,action){ if(!state){ return { title: { text: 'React.js 小书', color: 'red', }, content: { text: 'React.js 小书内容', color: 'blue' } } } switch (action.type) { case 'UPDATE_TITLE_TEXT': return { ... state, title:{ ...state.title, text:action.text } } break case 'UPDATE_TITLE_COLOR': return { ... state, title:{ ...state.title, color:action.color } } break default: return state } } function createStore(reducer){ let state = null const listeners =[] const subscribe = (listener)=>listeners.push(listener) const getState = ()=>state const dispatch = (action)=>{ state = reducer(state,action) listeners.forEach(listener=>listener()) } dispatch({}) // init state return {getState,dispatch,subscribe} } const store = createStore(stateChanger) let oldState = store.getState() store.subscribe(()=>{ const newState = store.getState() renderApp(newState,oldState) oldState = newState }) renderApp(store.getState()) store.dispatch({ type: 'UPDATE_TITLE_TEXT', text: '《React.js 小书》' }) // 修改标题文本 store.dispatch({ type: 'UPDATE_TITLE_COLOR', color: 'blue' }) // 修改标题颜色 |
nodejs批处理iconfontsvg文件
nodejs批处理iconfontsvg文件生成svg对象文件供三端统一使用 [crayon-63d9e07d […]
nodejs实现简单的文件服务器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
const http = require('http') const fs = require('fs') const mime = require('mime') const url = require('url') const path = require('path') const [hostname, port] = ['127.0.0.1', 3000] const server = http.createServer((req, res)=>{ let pathname = decodeURIComponent(path.join(__dirname,url.parse(req.url).pathname)) if(fs.statSync(pathname).isDirectory()){ res.writeHead(200,{'Content-Type':'text/html;charset=utf-8'}) fs.readdir(pathname,(err,files)=>{ res.write('<ul>') files.forEach(element => { let link = path.join(url.parse(req.url).pathname,element) res.write(`<li><a href = "${link}">${element}</a></li>`) }); res.end('<ul>') }) } else{ fs.readFile(pathname, 'binary', (err, data)=>{ if(err){ res.writeHead(500,{'Content-Type':'text/plain'}) res.end(JSON.stringify(err)) return false } res.writeHead(200,{'Content-Type':`${mime.lookup(pathname)};charset:utf-8`}) res.write(data,'binary') res.end() }) } res.statusCode = 200 }) server.listen(port, hostname,()=>{ console.log(`服务器运行在 http://${hostname}:${port}`) }) |
gitlab折腾记录
本片为记录购买阿里云ecs并手动安装gitlab踩坑记录 1、操作系统为CentOS 2、vim /etc/y […]