奇怪的用法又增加了,这回是直接在思源里直接伺服思源的源码

本贴最后更新于 984 天前,其中的信息可能已经时过境迁

奇怪的用法增加了:通过渲染进程在思源中拉起子应用 - 链滴 (ld246.com)

上面那个帖子介绍了在新的渲染进程中拉服务的办法。

electron 的渲染进程又是有 node 环境的对吧, 所以我们可以用它来做一些奇怪的事情。

比如说直接把思源的前端代码拉到应用里跑着玩。

但是我们知道思源的源码都是 ts 嘛,所以需要搞一点点小操作,比如说把它转译成 js 之后伺服。

转译的部分挺长的就直接放 github 链接算了,老哥们应该都能够看到吧。。。。。

naive/script/coreServicies/compiler at master · leolee9086/naive (github.com)

不过直接跑是跑不了的,pdfjs.js 那里会出问题,不过只要改改就行了

·

/* Copyright 2016 Mozilla Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* globals module, __non_webpack_require__ */ "use strict"; import {addScriptSync} from '../../protyle/util/addScript' import {Constants} from '../../constants' addScriptSync(`${Constants.PROTYLE_CDN}/js/pdf/pdf.js`, 'pdfjsScript') export default window["pdfjs-dist/build/pdf"] export let __esModule = window["pdfjs-dist/build/pdf"]["__esModule"] export let AnnotationEditorLayer = window["pdfjs-dist/build/pdf"]["AnnotationEditorLayer"] export let AnnotationEditorParamsType = window["pdfjs-dist/build/pdf"]["AnnotationEditorParamsType"] export let AnnotationEditorType = window["pdfjs-dist/build/pdf"]["AnnotationEditorType"] export let AnnotationEditorUIManager = window["pdfjs-dist/build/pdf"]["AnnotationEditorUIManager"] export let AnnotationLayer = window["pdfjs-dist/build/pdf"]["AnnotationLayer"] export let AnnotationMode = window["pdfjs-dist/build/pdf"]["AnnotationMode"] export let CMapCompressionType = window["pdfjs-dist/build/pdf"]["CMapCompressionType"] export let GlobalWorkerOptions = window["pdfjs-dist/build/pdf"]["GlobalWorkerOptions"] export let InvalidPDFException = window["pdfjs-dist/build/pdf"]["InvalidPDFException"] export let MissingPDFException = window["pdfjs-dist/build/pdf"]["MissingPDFException"] export let OPS = window["pdfjs-dist/build/pdf"]["OPS"] export let PDFDataRangeTransport = window["pdfjs-dist/build/pdf"]["PDFDataRangeTransport"] export let PDFDateString = window["pdfjs-dist/build/pdf"]["PDFDateString"] export let PDFWorker = window["pdfjs-dist/build/pdf"]["PDFWorker"] export let PasswordResponses = window["pdfjs-dist/build/pdf"]["PasswordResponses"] export let PermissionFlag = window["pdfjs-dist/build/pdf"]["PermissionFlag"] export let PixelsPerInch = window["pdfjs-dist/build/pdf"]["PixelsPerInch"] export let RenderingCancelledException = window["pdfjs-dist/build/pdf"]["RenderingCancelledException"] export let SVGGraphics = window["pdfjs-dist/build/pdf"]["SVGGraphics"] export let UNSUPPORTED_FEATURES = window["pdfjs-dist/build/pdf"]["UNSUPPORTED_FEATURES"] export let UnexpectedResponseException = window["pdfjs-dist/build/pdf"]["UnexpectedResponseException"] export let Util = window["pdfjs-dist/build/pdf"]["Util"] export let VerbosityLevel = window["pdfjs-dist/build/pdf"]["VerbosityLevel"] export let XfaLayer = window["pdfjs-dist/build/pdf"]["XfaLayer"] export let build = window["pdfjs-dist/build/pdf"]["build"] export let createPromiseCapability = window["pdfjs-dist/build/pdf"]["createPromiseCapability"] export let createValidAbsoluteUrl = window["pdfjs-dist/build/pdf"]["createValidAbsoluteUrl"] export let getDocument = window["pdfjs-dist/build/pdf"]["getDocument"] export let getFilenameFromUrl = window["pdfjs-dist/build/pdf"]["getFilenameFromUrl"] export let getPdfFilenameFromUrl = window["pdfjs-dist/build/pdf"]["getPdfFilenameFromUrl"] export let getXfaPageViewport = window["pdfjs-dist/build/pdf"]["getXfaPageViewport"] export let isPdfFile = window["pdfjs-dist/build/pdf"]["isPdfFile"] export let loadScript = window["pdfjs-dist/build/pdf"]["loadScript"] export let renderTextLayer = window["pdfjs-dist/build/pdf"]["renderTextLayer"] export let shadow = window["pdfjs-dist/build/pdf"]["shadow"] export let version = window["pdfjs-dist/build/pdf"]["version"]

就是把它改得啰嗦一点..........

naive/pdfjs.js at master · leolee9086/naive (github.com)

为啥不用 vite 呢,因为一是一开始没配置好在思源里拉起 vite 老是出问题,二是改了代码之后 vite 热更新其实也没有比直接刷新快多少(主要是因为我菜)..............

还有一个地方就是思源得源码里面是有一些像这样的代码的嘛

image.png

///#if !BROWSER ///endif

这里需要一个解析工具 ,用 vite 的老哥可以试试 vite-plugin-ifdef(之前弄得挺糙得,最好自己改改再用),不用的话就直接自己弄一下条件解析就行了。

整出来反正是能够跑起来的。

这玩意有什么用呢。。。。。。

思源的编辑器比较复杂,有的时候自己改了也不大敢往仓库 pr 对吧,但是自娱自乐的时候我又不喜欢老是要去打命令行,所以就干脆在思源里面拉一个思源得了,基本实现魔改自由(并没有,因为 V 姐肝得太快所以你的魔改代码也得跟着改...... 过不了两天就觉得就跟不动了就安心当条咸鱼算了)

image.png

上面那个就是运行效果,看起来差不多是吧,其实它是这样的

image.png

然后那天看到主仓库里有个 api.ts 但是没怎么动就自己玩了一下。。。

image.png

所以说到底还是并无什么卵用.......

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    26372 引用 • 109672 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Love2D

    Love2D 是一个开源的, 跨平台的 2D 游戏引擎。使用纯 Lua 脚本来进行游戏开发。目前支持的平台有 Windows, Mac OS X, Linux, Android 和 iOS。

    14 引用 • 53 回帖 • 563 关注
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 683 关注
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    246 引用 • 1338 回帖
  • 招聘

    哪里都缺人,哪里都不缺人。

    188 引用 • 1057 回帖
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 62 关注
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    229 引用 • 476 回帖 • 1 关注
  • 百度

    百度(Nasdaq:BIDU)是全球最大的中文搜索引擎、最大的中文网站。2000 年 1 月由李彦宏创立于北京中关村,致力于向人们提供“简单,可依赖”的信息获取方式。“百度”二字源于中国宋朝词人辛弃疾的《青玉案·元夕》词句“众里寻他千百度”,象征着百度对中文信息检索技术的执著追求。

    63 引用 • 785 回帖 • 68 关注
  • frp

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。

    17 引用 • 7 回帖 • 1 关注
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    240 引用 • 224 回帖
  • WebClipper

    Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。

    3 引用 • 9 回帖 • 1 关注
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    730 引用 • 1283 回帖
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    346 引用 • 760 回帖
  • Lute

    Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。

    29 引用 • 202 回帖 • 30 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    4 引用 • 7 回帖
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    19 引用 • 23 回帖 • 741 关注
  • uTools

    uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。

    7 引用 • 28 回帖
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 178 关注
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖
  • SVN

    SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。

    29 引用 • 98 回帖 • 698 关注
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 446 关注
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖 • 1 关注
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    36 引用 • 35 回帖 • 3 关注
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    6 引用 • 143 回帖
  • H2

    H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。

    11 引用 • 54 回帖 • 672 关注
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 617 关注