们将在这个小小的城镇中相互扶持,共同生活下去
今宵之月,绝不西沉。只此美梦,不再苏醒。从今往后,生生世世,长相厮守,为你立誓。
我们不能让这次冒险之旅没有意义没有收获
我们的本质就是血,一层层地重复,然后世代脉脉相传的血才是黑血的真实
当你知道自己被爱著的时候就不会自卑了asd
不要哭,我还没有努力到要哭的程度,不甘心就可以了das
既不回头,何必不忘;既然无缘,何必誓言;今日种种,似水无痕
空谈之类,是谈不久,也谈不出什么来的,它终必被事实的镜子照出原形,拖出尾巴而去
只愿涤荡四方,护得一世之隅。
你看你浪费了多少流星,哈哈……不牵个手也很浪费这样的夜晚呢
有形的东西迟早会凋零,但只有回忆是永远不会凋零的
已经无法回来的东西,得到和舍弃都很痛苦
Pain past is pleasure.11222
我因为后来离开村子,在远处看见这一村庄人的火焰。看见他们比熄灭还要寂静的那一场燃烧。我像一根逃出火堆的干柴,幸运而孤独地站在远处。
河川,激流逆流顺流回流,犹如人生前后进退往复不息
首页
统计
免费Chat GPT
关于
更多
友链
每日新闻
视频
高清壁纸
Search
1
2023彩虹易支付最新原版开源网站源码,完整的易支付源码,无后门
465 阅读
2
ThinkPHP6的常见问题解答
387 阅读
3
Spring Boot之七牛云分片上传
239 阅读
4
小狐狸ChatGPT付费创作系统V2.4.9独立版 +WEB端+ H5端 + 小程序端(支持分享朋友圈、破解弹窗)
230 阅读
5
国内最好用的六款虚拟机软件
211 阅读
技术分享
源码分享
课程分享
号卡套餐
移动专区
电信专区
联通专区
广电专区
软件仓库
电脑软件
安卓软件
活动线报
值得一看
Search
标签搜索
技术分享
源码
源码分享
css
安卓软件
活动线报
软件
课程分享
号卡
电脑软件
PHP
值得一看
HTML
js
教程
chatgpt
AI
小程序
ThinkPHP
联通
老K博客
累计撰写
420
篇文章
累计收到
338
条评论
今日撰写
0
篇文章
首页
栏目
技术分享
源码分享
课程分享
号卡套餐
移动专区
电信专区
联通专区
广电专区
软件仓库
电脑软件
安卓软件
活动线报
值得一看
页面
统计
免费Chat GPT
关于
友链
每日新闻
视频
高清壁纸
用户登录
登录
搜索到
18
篇与
的结果
2023-11-18
如何实现这样一款代码图片生成器
前言要学好一门技术,最好的方式就是实践。上面这样一个代码图片生成器,就是当初为了学习 React 技术开发,特地找的一个功能不是很复杂,但是涉及的技术点又不至于太单一, 于是找了这样一个工具型的项目(UI 参照 ray.so[2]),代码从零开始实现来检验自己学的知识是否牢固。简单来讲解下,实现这个项目用到的一些技术点和背后的原理:代码高亮选择了最主流的 highlight.js 库;网页元素界面转图片使用了 html2canvas 工具;代码编辑器实时高亮是上层使用了 textarea 输入框,设置字体和背景透明,下层使用 div 显示代码,并结合 highlight.js 做代码高亮;透明背景通过 CSS 属性背景图片设置线性渐变 linear-gradient 模拟实现;代码背景框的左右拖拽来改变宽度功能。实现详解代码编辑器这里的难点,可能有人就想如何实现一个代码实时编辑的区域,又能让代码高亮显示?代码编辑区域我们使用文本输入框 textarea, 代码高亮我们使用 highlight.js 帮助实现,但是如何对输入框中的代码进行高亮是个难点。这里我们实现的思路是通过绝对定位 ,上层使用输入框,设置背景透明和其中的文字颜色透明,然后下层放置一个 div 层做代码的显示。上层输入,下层显示。结构代码export default function Main () { // ... return ( <div className="codeEditor"> <textarea className="editorTextarea" spellCheck={false} autoComplete='off' tabIndex={-1} autoCorrect='off' autoCapitalize='off' value={code} onChange={e => setCode(e.target.value)} style={{ height: editorHeight + 'px' }} onInput={e => setEditorHeight(e.target.scrollHeight)}> </textarea> <div id={settings.lang} ref={codeRef} className={clsx("codeFormatted", settings.lang)} style={{ color: '#fefdfd', background: 'transparent' }} > {code} </div> </div> )样式代码.codeEditor { display: grid; width: 100%; grid-template: 1fr/1fr; } .editorTextarea { border: none; resize: none; background: transparent; z-index: 2; color: transparent; caret-color: white; text-size-adjust: none; } .editorTextarea, .codeFormatted { padding: 16px 16px 21px 16px; margin: 0; font: var(--ifm-font-size-base) / var(--ifm-line-height-base) var(--ifm-font-family-base); font-weight: 500; font-family: 'JetBrains Mono', monospace; font-variant-ligatures: none; grid-column: 1/1; grid-row: 1/1; tab-size: 2; white-space: pre-wrap; box-sizing: border-box; }从 CSS 代码中高亮的部分我们可以看出,针对 editorTextarea 和 codeFormatted 两个类设置了相同的字体类型、大小相同的样式,就是保证 代码的输入层和显示层上下相同文字处于完全重合的状态,来模拟看到的代码就是你实时输入的代码。highlight.js 实现代码高亮部分代码:import hljs from '../../config/highlight'; useEffect(() => { if (codeRef.current) { hljs.highlightElement(codeRef.current); } }, [code, settings.lang])代码背景区域拖拽改变宽度本功能我已经将核心代码抽出来,实现成了小组件。原理不难懂,就是通过添加页面元素的监听事件,按下鼠标之后跟随鼠标移动位置,来计算区块宽度改变后的大小。详细实现参考:【可左右拖拽改变大小的区块[3]】将页面元素转成图片导出得益于 html2canvas 工具库的帮助,我们很轻松将网页中某一部分通过 canvas 中转导出成图片。const exportImg = () => { if (!imgCode.current) return; html2canvas(imgCode.current, { useCORS: true, scale: 2, backgroundColor: 'transparent' }).then((canvas) => { const dataURL = canvas.toDataURL('image/png'); let newImg = new Image() const date = new Date() newImg.src = canvas.toDataURL('image/png') const a = document.createElement("a"); a.style.display = "none"; a.href = newImg.src; a.download = `spacexcode-${date.getMinutes()}${date.getSeconds()}.png`; a.rel = "noopener noreferrer"; document.body.append(a); a.click(); setTimeout(() => { a.remove(); }, 1000); }) }透明背景的模拟实现当我们将设置区域的背景按钮切换置灰时,显示出透明的样式: 这个其实是 通过 CSS 模拟出来的.grid { height: 200px; background-image: linear-gradient(45deg, #8d8b8b 25%, transparent 0), linear-gradient(-45deg, #8d8b8b 25%, transparent 0), linear-gradient(45deg, transparent 75%, #8d8b8b 0), linear-gradient(-45deg, transparent 75%, #8d8b8b 0); background-position: 0 0, 0 10px, 10px -10px, -10px 0; background-size: 20px 20px; }最后核心的功能实现的思路都讲解了,然后剩下细节部分需要完善的,比如主题,我们制作了8种好看的渐变颜色背景。通过改变内边距,来改变代码区域占整个图片的比例。总结实现一款好用的小工具,不仅仅要掌握实现的基本思路,核心代码的实现。后期的细节完善,页面的样式和用户的操作体验都是值得细细推敲的。经过这个工具的制作,基本掌握了一个框架 的大部分语法的使用。比如:React 中样式代码的几种写法表单中变量的响应式常见 hooks 的使用,比如:useCallback,useState,useEffect 等组件化的代码参考资料[1]https://spacexcode.com/codeimage: https://spacexcode.com/codeimage[2]ray.so: https://ray.so[3]可左右拖拽改变大小的区块: https://spacexcode.com/docs/snippet/component/resize-block
2023年11月18日
80 阅读
0 评论
0 点赞
2023-11-17
Dash应用浏览器端回调常用方法总结
回调函数是我们在Dash应用中实现各种交互功能的核心,在绝大多数情况下,我们只需要以纯Python的方式编写常规服务端回调函数即可,这也贯彻了Dash无需编写javascript即可构建web应用的理念。但这并不代表在Dash应用中我们只能使用Python,更自由地,Dash针对回调函数编写还提供了client side callback(我们通常称作浏览器端回调)相关功能,使得我们可以在仍然使用Python编排回调函数角色的基础上,嵌入自定义的javascript代码片段来执行相应的回调输入输出逻辑,从而解决一些特殊的需求。今天的文章中,我就将带大家一起学习Dash浏览器端回调常用的方法和技巧😎 浏览器端回调,顾名思义,其对应的函数体计算过程是在每个用户的本地浏览器中执行的,这在一些特殊的场景下,可以帮助我们节省服务器算力、网络传输带宽等消耗,还可以在用户网络状况很差时,提升一些用户交互功能的流畅度,亦或是可以让我们在Dash应用中额外引入javascript生态的功能(譬如在Dash应用中高效渲染原生echarts图表)。而在Dash中,我们主要有两种定义浏览器端回调的方式:一、基于app.clientside_callback编写简单浏览器端逻辑此种浏览器端回调定义方式适用于执行非常简单的javascript代码片段,只需要为app.clientside_callback()的第一个参数传入字符串形式的javascript函数体即可(推荐使用箭头函数),其中函数体内部参数的输入,以及结果的输出,原则类似常规的回调函数。举个例子,我们来实现一段非常简单的逻辑,通过按钮的点击,来触发对应模态框的打开:浏览器端回调)相关功能,使得我们可以在仍然使用Python编排回调函数角色的基础上,嵌入自定义的javascript代码片段来执行相应的回调输入输出逻辑,从而解决一些特殊的需求。今天的文章中,我就将带大家一起学习Dash浏览器端回调常用的方法和技巧😎。阅读本文大约需要15分钟浏览器端回调,顾名思义,其对应的函数体计算过程是在每个用户的本地浏览器中执行的,这在一些特殊的场景下,可以帮助我们节省服务器算力、网络传输带宽等消耗,还可以在用户网络状况很差时,提升一些用户交互功能的流畅度,亦或是可以让我们在Dash应用中额外引入javascript生态的功能(譬如在Dash应用中高效渲染原生echarts图表)。而在Dash中,我们主要有两种定义浏览器端回调的方式:1 基于app.clientside_callback编写简单浏览器端逻辑#此种浏览器端回调定义方式适用于执行非常简单的javascript代码片段,只需要为app.clientside_callback()的第一个参数传入字符串形式的javascript函数体即可(推荐使用箭头函数),其中函数体内部参数的输入,以及结果的输出,原则类似常规的回调函数。举个例子,我们来实现一段非常简单的逻辑,通过按钮的点击,来触发对应模态框的打开:对应app.clientside_callback的完整应用代码如下:app1.pyimport dash from dash import html import feffery_antd_components as fac from dash.dependencies import Input, Output app = dash.Dash(__name__) app.layout = html.Div( [ fac.AntdButton( '打开模态框', id='open-modal', type='primary' ), fac.AntdModal( fac.AntdParagraph('测试内容'*100), id='modal', title='模态框示例' ) ], style={ 'padding': '50px 100px' } ) app.clientside_callback( '(nClicks) => true', Output('modal', 'visible'), Input('open-modal', 'nClicks'), prevent_initial_call=True ) if __name__ == '__main__': app.run(debug=True)可以看到,写法非常简单,对于编写此类简单浏览器端回调的需求,我们只需要用到javascript最基础的语法,非常的方便😇,再来个稍微复杂一点的例子,我们基于轮询组件,实现当前系统时间的实时更新:app2.pyimport dash from dash import html, dcc import feffery_antd_components as fac from dash.dependencies import Input, Output app = dash.Dash(__name__) app.layout = html.Div( [ dcc.Interval( id='interval', interval=1000 # 每秒触发一次 ), fac.AntdStatistic( id='current-datetime', title='当前时间' ) ], style={ 'padding': '50px 100px' } ) app.clientside_callback( '''(n_intervals) => { return `${new Date().toLocaleDateString().replaceAll("/", "-")} ${new Date().toLocaleTimeString()}` }''', Output('current-datetime', 'value'), Input('interval', 'n_intervals') ) if __name__ == '__main__': app.run(debug=True)二、基于ClientsideFunction编写复杂浏览器端回调如果我们想要执行的浏览器端回调逻辑比较复杂和冗长,那么在app.clientside_callback里用字符串的方式写大段的javascript代码就不太高效了🙅♂️,相应的我们可以改为使用ClientsideFunction来定义。使用ClientsideFunction来定义浏览器端回调,我们首先需要在我们的Dash应用静态资源目录下(默认为assets)建立相应的js文件(名称随意,Dash应用会自动加载静态资源目录下的js文件到用户浏览器中),并在该js文件中按照下列格式定义若干javascript回调函数:window.dash_clientside = Object.assign({}, window.dash_clientside, { clientside: { func1: () => { // write your code logic } } });接着在相应的Python程序中配合ClientsideFunction按照下列格式关联编排回调函数即可:app.clientside_callback( ClientsideFunction( namespace='clientside', function_name='函数名称' ), # 照常编排回调角色 )废话不多说,我们直接将上文中实时刷新系统时间的示例改造成ClientsideFunction形式以便理解:assets/clientside_callbacks.jswindow.dash_clientside = Object.assign({}, window.dash_clientside, { clientside: { update_datetime: (n_intervals) => { return `${new Date().toLocaleDateString().replaceAll("/", "-")} ${new Date().toLocaleTimeString()}` } } });app3.pyimport dash from dash import html, dcc import feffery_antd_components as fac from dash.dependencies import Input, Output, ClientsideFunction app = dash.Dash(__name__) app.layout = html.Div( [ dcc.Interval( id='interval', interval=1000 # 每秒触发一次 ), fac.AntdStatistic( id='current-datetime', title='当前时间' ) ], style={ 'padding': '50px 100px' } ) app.clientside_callback( ClientsideFunction( namespace='clientside', function_name='update_datetime' ), Output('current-datetime', 'value'), Input('interval', 'n_intervals') ) if __name__ == '__main__': app.run(debug=True)这样做的好处在于,我们可以把相对复杂的javascript逻辑在原生的js程序里编写,从而配合现代化ide获得更高效的编程体验,并且利用ClientsideFunction形式,可以很方便地实现外部js框架的引入使用,譬如引入使用原生echarts,篇幅有限,今天先按下不表,之后另外发文举例介绍。三、 编写浏览器端回调的常用技巧通过上文,我们知晓了Dash中构建浏览器端回调的基本形式,下面我们补充一些有关浏览器端回调的实用技巧:3.1 配合插件快捷生成模板代码编写浏览器端回调,尤其是配合ClientsideFunction时,其代码格式还是有些特殊的,不过别担心,如果你恰好在使用vscode编写Dash应用,可以在拓展里安装由我开发维护的插件feffery-dash-snippets,安装完成后,可以通过输入一些快捷短语,进行相关代码模板的生成。目前针对浏览器端回调+ClientsideFunction,在py文件中可用的快捷短语有:callback-cs:oi:快速初始化具有Input和Output角色的浏览器端回调函数 callback-cs:ois:快速初始化具有Input、Output及State角色的浏览器端回调函数 在js文件中可用的快捷短语有:callback:init:快捷生成浏览器端回调函数定义模板3.2 常用对象在浏览器端回调中的写法在常规的服务端回调函数中我们经常会使用到dash.no_update、PreventUpdate、dash.callback_context等对象来辅助回调函数功能逻辑的完成,而在浏览器端回调中,这些对象的写法要做一定变化:dash.no_updatedash.no_update在浏览器端回调中写作window.dash_clientside.no_update,你也可以用feffery-dash-snippets插件中的dash.no_update快捷短语生成: dash.callback_contextdash.callback_context在浏览器端回调中写作window.dash_clientside.callback_context,你也可以用feffery-dash-snippets插件中的dash.callback_context快捷短语生成: 阅读本文大约需要15分钟浏览器端回调,顾名思义,其对应的函数体计算过程是在每个用户的本地浏览器中执行的,这在一些特殊的场景下,可以帮助我们节省服务器算力、网络传输带宽等消耗,还可以在用户网络状况很差时,提升一些用户交互功能的流畅度,亦或是可以让我们在Dash应用中额外引入javascript生态的功能(譬如在Dash应用中高效渲染原生echarts图表)。而在Dash中,我们主要有两种定义浏览器端回调的方式:1 基于app.clientside_callback编写简单浏览器端逻辑#此种浏览器端回调定义方式适用于执行非常简单的javascript代码片段,只需要为app.clientside_callback()的第一个参数传入字符串形式的javascript函数体即可(推荐使用箭头函数),其中函数体内部参数的输入,以及结果的输出,原则类似常规的回调函数。举个例子,我们来实现一段非常简单的逻辑,通过按钮的点击,来触发对应模态框的打开:对应app.clientside_callback的完整应用代码如下:app1.pyimport dashfrom dash import htmlimport feffery_antd_components as facfrom dash.dependencies import Input, Outputapp = dash.Dash(__name__)app.layout = html.Div([ fac.AntdButton( '打开模态框', id='open-modal', type='primary' ), fac.AntdModal( fac.AntdParagraph('测试内容'*100), id='modal', title='模态框示例' ) ], style={ 'padding': '50px 100px' })app.clientside_callback('(nClicks) => true', Output('modal', 'visible'), Input('open-modal', 'nClicks'), prevent_initial_call=True)if name == '__main__':app.run(debug=True)可以看到,写法非常简单,对于编写此类简单浏览器端回调的需求,我们只需要用到javascript最基础的语法,非常的方便😇,再来个稍微复杂一点的例子,我们基于轮询组件,实现当前系统时间的实时更新:app2.pyimport dashfrom dash import html, dccimport feffery_antd_components as facfrom dash.dependencies import Input, Outputapp = dash.Dash(__name__)app.layout = html.Div([ dcc.Interval( id='interval', interval=1000 # 每秒触发一次 ), fac.AntdStatistic( id='current-datetime', title='当前时间' ) ], style={ 'padding': '50px 100px' })app.clientside_callback('''(n_intervals) => { return `${new Date().toLocaleDateString().replaceAll("/", "-")} ${new Date().toLocaleTimeString()}` }''', Output('current-datetime', 'value'), Input('interval', 'n_intervals'))if name == '__main__':app.run(debug=True)2 基于ClientsideFunction编写复杂浏览器端回调#如果我们想要执行的浏览器端回调逻辑比较复杂和冗长,那么在app.clientside_callback里用字符串的方式写大段的javascript代码就不太高效了🙅♂️,相应的我们可以改为使用ClientsideFunction来定义。使用ClientsideFunction来定义浏览器端回调,我们首先需要在我们的Dash应用静态资源目录下(默认为assets)建立相应的js文件(名称随意,Dash应用会自动加载静态资源目录下的js文件到用户浏览器中),并在该js文件中按照下列格式定义若干javascript回调函数:window.dash_clientside = Object.assign({}, window.dash_clientside, {clientside: { func1: () => { // write your code logic } }});接着在相应的Python程序中配合ClientsideFunction按照下列格式关联编排回调函数即可:app.clientside_callback(ClientsideFunction( namespace='clientside', function_name='函数名称' ), # 照常编排回调角色)废话不多说,我们直接将上文中实时刷新系统时间的示例改造成ClientsideFunction形式以便理解:assets/clientside_callbacks.jswindow.dash_clientside = Object.assign({}, window.dash_clientside, {clientside: { update_datetime: (n_intervals) => { return `${new Date().toLocaleDateString().replaceAll("/", "-")} ${new Date().toLocaleTimeString()}` } }});app3.pyimport dashfrom dash import html, dccimport feffery_antd_components as facfrom dash.dependencies import Input, Output, ClientsideFunctionapp = dash.Dash(__name__)app.layout = html.Div([ dcc.Interval( id='interval', interval=1000 # 每秒触发一次 ), fac.AntdStatistic( id='current-datetime', title='当前时间' ) ], style={ 'padding': '50px 100px' })app.clientside_callback(ClientsideFunction( namespace='clientside', function_name='update_datetime' ), Output('current-datetime', 'value'), Input('interval', 'n_intervals'))if name == '__main__':app.run(debug=True)这样做的好处在于,我们可以把相对复杂的javascript逻辑在原生的js程序里编写,从而配合现代化ide获得更高效的编程体验,并且利用ClientsideFunction形式,可以很方便地实现外部js框架的引入使用,譬如引入使用原生echarts,篇幅有限,今天先按下不表,之后另外发文举例介绍。3 编写浏览器端回调的常用技巧#通过上文,我们知晓了Dash中构建浏览器端回调的基本形式,下面我们补充一些有关浏览器端回调的实用技巧:3.1 配合插件快捷生成模板代码#编写浏览器端回调,尤其是配合ClientsideFunction时,其代码格式还是有些特殊的,不过别担心,如果你恰好在使用vscode编写Dash应用,可以在拓展里安装由我开发维护的插件feffery-dash-snippets,安装完成后,可以通过输入一些快捷短语,进行相关代码模板的生成。目前针对浏览器端回调+ClientsideFunction,在py文件中可用的快捷短语有:callback-cs:oi:快速初始化具有Input和Output角色的浏览器端回调函数callback-cs:ois:快速初始化具有Input、Output及State角色的浏览器端回调函数在js文件中可用的快捷短语有:callback:init:快捷生成浏览器端回调函数定义模板3.2 常用对象在浏览器端回调中的写法#在常规的服务端回调函数中我们经常会使用到dash.no_update、PreventUpdate、dash.callback_context等对象来辅助回调函数功能逻辑的完成,而在浏览器端回调中,这些对象的写法要做一定变化:dash.no_updatedash.no_update在浏览器端回调中写作window.dash_clientside.no_update,你也可以用feffery-dash-snippets插件中的dash.no_update快捷短语生成:PreventUpdatePreventUpdate在浏览器端回调中写作PreventUpdate,你也可以用feffery-dash-snippets插件中的PreventUpdate快捷短语生成(注意,在浏览器端回调中throw window.dash_clientside.PreventUpdate等价于常规回调中的raise PreventUpdate):dash.callback_contextdash.callback_context在浏览器端回调中写作window.dash_clientside.callback_context,你也可以用feffery-dash-snippets插件中的dash.callback_context快捷短语生成:3.3 在浏览器端回调中返回组件元素我们在常规回调函数中,经常会以一些组件的children或其他组件型参数为Output目标,直接返回组件元素,在Python中这样做很稀疏平常,但是在浏览器端回调中,我们如果有此类需求,则需要返回规定的JSON数据格式,来表示一个组件元素:{ props: { // 定义当前组件的各属性,如 id: '组件id' }, type: '组件完整名称,如AntdButton', namespace: '组件所属组件库完整名称,如feffery_antd_components' }具体代码如下,可以看到只要我们按照格式返回相应的组件JSON数据,Dash就会在浏览器中自动进行转换及渲染:app4.pyimport dash from dash import html import feffery_antd_components as fac from dash.dependencies import Input, Output app = dash.Dash(__name__) app.layout = html.Div( [ fac.AntdButton( '新的消息', id='new-message', type='primary' ), html.Div(id='new-message-container') ], style={ 'padding': '50px 100px' } ) app.clientside_callback( '''(nClicks) => ({ props: { content: "新的消息,nClicks:" + nClicks, type: "info" }, type: "AntdMessage", namespace: "feffery_antd_components" })''', Output('new-message-container', 'children'), Input('new-message', 'nClicks'), prevent_initial_call=True ) if __name__ == '__main__': app.run(debug=True)
2023年11月17日
76 阅读
0 评论
0 点赞
2023-10-11
《AI写作技术》公众号崛起了,5分钟一篇文章
我们站在新媒体的围墙之外,经常会问:公众号还有机会吗?头条还有机会吗?抖音还有机会吗?想要进去尝试一下,又觉得这些领域早就人满为患,哪怕自己努力了,也赚不到钱。但是外面的广告,朋友圈里看到的各种收益截图,又好像挺有搞头!现在亮子明确地告诉你:任何领域都有机会,只不过属于那些坚持做下去,一直在提高自己技能的人,这类人群占比在3%!就好像学习微头条的人,总会问:“这项目,赚钱吗?”我也会如实回答:“能稳定每天赚几百上千的人,我们社群只占比3%!”今天咱们聊的主题是公众号!公众号作为一个“封闭”的媒体,还有机会吗?有!很有!而且腾讯爸爸给钱挺舍得!一、先看结果,再讲如何做!这位老师,4月份开始做公众号, 花了几十块买了五百个粉丝,开通了流量主功能,大家要注意!公众号粉丝有500人,才能开通流量主功能,开通以后你才有广告分成收益!在4月份之前,他的文章几乎都是个位数阅读量,除了自己看,没人看!我相信这也是大家的疑惑,我公众号没有粉丝,怎么可能有阅读量?等下,会给大家来讲!课程目录No.1 先导课.pdfNo.2如何选择爆文领域.pdfNo.3如何获得源源不断的爆文.pdfNo.4万能写作公式及优化技巧.pdfNo.5最简单的故事框架.pdfNo.6改编练习.pdfNo.7神奇改编技术-1.pdfNo.8爆文系列之爱国流.pdfNo.8超级改编技术.pdfNo.9改编.pdfNo.10改编练习.pdfNo.11头条引流术 .pdfNo.12海外搬运技术.pdfNo.13拼接文章法.pdfNo.14商业模式.pdf[01AI写作训练营]第一课:用AI写爆文的方法.mp4第二课:AI写长文,该怎么写?.mp4第三课:用AI来改编爆文,怎么操作?.mp4第四课:如何通过AI成为意见领袖?.mp4第五课:用AI写小说的技巧.mp4[02朋友圈勾魂文案课][03揭秘副业底层逻辑,掌控赚钱的核心规律!][04全网引流技术][05头条文章批量制造技术]第一课:如何找到高爆率的素材?.mp4第二课:快速制造原创文章的方法(上).mp4第三课:快速制造原创文章的方法(下).mp4第四课:新人选择什么领域更赚钱?.mp4第五课:3分钟写一条10万阅读的微头条.mp4[06超级搜索术]如何快速写文章呢?当然是用Chatgpt!用AI来帮你改编热门文章,改得面目全非,亲妈都看不出来{cloud title="" type="bd" url="https://pan.baidu.com/s/1YNQ5Bprya-t2oA4reM9Tsw?pwd=pmdv " password=""/}
2023年10月11日
43 阅读
0 评论
0 点赞
1
...
3
4
CC BY-NC-ND