
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
A Markdown to WeChat renderer component optimized for WeChat Official Account publishing
一个专为微信公众号优化的 Markdown 渲染组件库。
这是小册 《玩转 Trae AI 编程》 的实战项目。
npm install md-wx
import React, { useState } from 'react'
import { MarkdownRenderer } from 'md-wx'
import 'md-wx/dist/style.css'
function App() {
const [markdown, setMarkdown] = useState(`# 欢迎使用 md-wx
这是一个专为微信公众号优化的 Markdown 渲染器。
## 特性
- 支持多种主题
- 响应式设计
- 代码高亮
\`\`\`javascript
console.log('Hello, md-wx!');
\`\`\`
`)
return (
<div>
<MarkdownRenderer
markdown={markdown}
showSettings={true}
/>
</div>
)
}
export default App
md-wx 提供完整的 TypeScript 类型定义,支持强类型开发:
import React, { useState } from 'react'
import { MarkdownRenderer, ThemeType, ViewMode } from 'md-wx'
import 'md-wx/dist/style.css'
interface AppProps {
initialMarkdown?: string
}
const App: React.FC<AppProps> = ({ initialMarkdown = '' }) => {
const [markdown, setMarkdown] = useState<string>(initialMarkdown)
const [currentTheme, setCurrentTheme] = useState<ThemeType>('minimal')
const [viewMode, setViewMode] = useState<ViewMode>('mobile')
const handleThemeChange = (themeId: ThemeType) => {
setCurrentTheme(themeId)
console.log('主题已切换到:', themeId)
}
const handleViewModeChange = (mode: ViewMode) => {
setViewMode(mode)
console.log('视图模式已切换到:', mode)
}
const handleCopy = (success: boolean) => {
if (success) {
console.log('复制成功!')
} else {
console.error('复制失败')
}
}
return (
<MarkdownRenderer
markdown={markdown}
theme={currentTheme}
defaultViewMode={viewMode}
onThemeChange={handleThemeChange}
onViewModeChange={handleViewModeChange}
onCopy={handleCopy}
showSettings={true}
enableCopy={true}
enableThemeSwitch={true}
enableViewModeToggle={true}
/>
)
}
export default App
// 主题类型
type ThemeType = 'minimal' | 'sakura' | 'forest' | 'ocean' | 'sunset'
// 视图模式类型
type ViewMode = 'mobile' | 'tablet' | 'desktop'
// 设备类型
type DeviceType = 'phone' | 'tablet' | 'desktop' | 'large-desktop'
// 组件 Props 类型
interface MarkdownRendererProps {
markdown?: string
theme?: ThemeType
showSettings?: boolean
followSystemTheme?: boolean
defaultViewMode?: ViewMode
enableCopy?: boolean
enableThemeSwitch?: boolean
enableViewModeToggle?: boolean
config?: Partial<DefaultConfig>
onThemeChange?: (themeId: ThemeType) => void
onViewModeChange?: (mode: ViewMode) => void
onCopy?: (success: boolean) => void
className?: string
}
import { useTheme, useViewModeContext, useCopyToClipboard } from 'md-wx'
const MyComponent: React.FC = () => {
// 主题相关
const { themeId, setTheme, theme } = useTheme()
// 视图模式相关
const { currentMode, setViewMode, isMobileMode } = useViewModeContext()
// 复制功能
const { copyToClipboard, isCopying } = useCopyToClipboard()
return (
<div>
<p>当前主题: {themeId}</p>
<p>当前视图模式: {currentMode}</p>
<p>是否为移动模式: {isMobileMode ? '是' : '否'}</p>
</div>
)
}
主要的渲染组件。
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| markdown | string | '' | Markdown 内容 |
| theme | string | 'minimal' | 主题名称 |
| showSettings | boolean | true | 是否显示设置面板 |
| followSystemTheme | boolean | true | 是否跟随系统主题 |
| defaultViewMode | string | 'mobile' | 默认视图模式 |
| enableCopy | boolean | true | 是否启用复制功能 |
| enableThemeSwitch | boolean | true | 是否启用主题切换 |
| enableViewModeToggle | boolean | true | 是否启用视图模式切换 |
minimal: 极简白(默认)sakura: 樱花粉forest: 森林绿ocean: 海洋蓝sunset: 日落橙如果你想参与开发或在本地测试组件,请参考 本地开发指南。
MIT License
FAQs
A Markdown to WeChat renderer component optimized for WeChat Official Account publishing
We found that md-wx demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.