基于CodeMirror 10分钟打造一个记事本应用(真的能使用,非demo)[通俗易懂]

基于CodeMirror 10分钟打造一个记事本应用(真的能使用,非demo)[通俗易懂]直接看最终效果在浏览器里面可以随时调出记事本,而且内容自动保存不怕丢失再来看怎么做的原理其实很简单主要使用了codeMirror来做编辑器数据保存在本地存储,编辑器内容变化时会自动存储,再次打开时会从本地存储里面读取并恢复在标签页直接打开、从工具栏打开记事本,需要安装chrome插件https://plugin.csdn.net/最后来看看代码怎么写1.创建扩展应用1.从桌面的`插件扩展`图标进入扩展后台2.点击`添加插件`,填写名称后,选择`本地代码`后确定即可3.在

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

直接看最终效果

在浏览器里面可以随时调出记事本,而且内容自动保存不怕丢失
在这里插入图片描述

再来看怎么做的

原理其实很简单

  1. 主要使用了codeMirror来做编辑器
  2. 数据保存在本地存储,编辑器内容变化时会自动存储,再次打开时会从本地存储里面读取并恢复
  3. 在标签页直接打开、从工具栏打开记事本,需要安装chrome插件 https://plugin.csdn.net/

最后来看看代码怎么写

1. 创建扩展应用

  1. 从桌面的插件扩展图标进入扩展后台
  2. 点击添加插件,填写名称,选择本地代码后确定即可
  3. 在插件信息页面填写插件描述信息,上传插件图标
    这里的触发词选项需要说明下,可以简单理解为插件的唯一标识,输入这个词后就会调用插件。建议英文+数字
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2. 添加代码

代码分为html、css、js三部分,和平时写前端代码基本一样。
不过有几点需要说明下:

  1. css、js不要和html混在一块,要不然会报错
  2. jqury、codeMirror已经有内置的了,可以使用相对路径,这样就不用走网络了,具体可以看下面代码

html代码

<html>
  <head>
    <title>记事本</title>
		<script src="/vendor/codemirror/lib/codemirror.min.js"></script>
		<script src="/js/jquery-3.5.1.min.js"></script>
		<link rel="stylesheet" href="/vendor/codemirror/lib/codemirror.css">
		<script src="/vendor/codemirror/keymap/sublime.js"></script>
  </head>
  <body>
		<textarea id="code" name="code" style="width:100%;height:calc(100vh - 50px);background:#f5f5f5;border: 1px solid #f0f0f5"></textarea>
	</body>
</html>

js代码

js代码重点有2部分

重点一:codeMirror编辑器使用

创建codeMirror编辑器并添加change事件监听

editor = CodeMirror.fromTextArea(document.getElementById("code"), { 
   
  		lineNumbers: true,
      	lineWrapping: true,
		extraKeys: { 
   "Ctrl-Q": function(cm){ 
    cm.foldCode(cm.getCursor()); }},
		mode: "markdown",
		keyMap: "sublime",
	});
editor.on("change",function(instance, changeObj){ 
   
	textChangeHandler(instance.getValue())
});
重点二:本地存储的使用
var storageKey = 'note_storage'
var value = 'test'
// 写入本地存储
localStorage[storageKey] = value
// 从本地存储读取数据
value = localStorage[storageKey]

完整的js代码如下


var storageKey = 'note_storage'
var editor
var default_text = 
              '1. 每次输入内容后会自动保存的,下次打开内容不会丢失的\n' +
              '2. 内容只保存在本地,插件备份功能不会备份该内容,请不要存储重要信息\n' +
							'3. 编辑器支持sublime快捷键' 
function textChangeHandler(text){ 
   
	if(typeof text === undefined || text === null){ 
   
		text = ''
	}
	localStorage[storageKey] = text
}

function init(){ 
   

	var text = localStorage[storageKey]
	//console.info('get ' + text)
	if(typeof text != undefined && text != null && text != ''){ 
   
		editor.setValue(text)
	}else{ 
   
		editor.setValue(default_text)
	}
}

(function(){ 
     
	  editor = CodeMirror.fromTextArea(document.getElementById("code"), { 
   
    		lineNumbers: true,
        lineWrapping: true,
				extraKeys: { 
   "Ctrl-Q": function(cm){ 
    cm.foldCode(cm.getCursor()); }},
				mode: "markdown",
				keyMap: "sublime",
			});
	
		init()
	
		editor.on("change",function(instance, changeObj){ 
   
			textChangeHandler(instance.getValue())
		});

})()

3. 添加到桌面

  1. 在桌面点击右上角图标进入到添加界面
  2. 选择系统分类,添加记事本即可

在这里插入图片描述

总结

最后总结下,写个真的可以使用的浏览器记事本还是很简单的。当然了这主要还是得益于codeMirror的强大功能。大家都可以来试试吧

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193220.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 使用nginx作为websocket的proxy server

    使用nginx作为websocket的proxy server

    2021年10月14日
    40
  • m3u8格式视频源列表[通俗易懂]

    m3u8格式视频源列表[通俗易懂]平时,需要测试m3u8格式视频的播放,会使用一些可用的播放源,整理在这里:constsourceList=[{name:’cctv1′,src:’http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8′},{name:’cctv2′,src:’http://ivi.bupt.edu.cn/hls/cc…

    2022年6月26日
    73
  • 华为kirin710f处理器怎么样是哪个手机型号(kirin710f是什么处理器)

    华为kirin710f处理器相当于高通骁龙636,麒麟710f是一个中端处理器,麒麟710采用4乘以A732.2GHz+4乘以A531.7GHz,独立DSP,ISP加持,支持LTECat.12/13,双卡双4G双voLTE,而荣耀8x搭载的是麒麟710f处理器,通过对荣耀8x安兔兔跑分测试,麒麟710安兔兔跑分大约在13万分左右,从跑分来看,麒麟710差不多与高通骁龙636差不多,目前搭载骁…

    2022年4月13日
    273
  • blender模型(sklearn模型融合)

    前言机器学习中很多训练模型通过融合方式都有可能使得准确率等评估指标有所提高,这一块有很多问题想学习,于是写篇博客来介绍,主要想解决:什么是融合?几种方式融合基本的模型融合组合及适用场景、优缺点等什么是融合?构建并结合多个学习器来完成学习任务,我们把它称为模型融合或者集成学习。不同的模型有各自的长处,具有差异性,而模型融合可以使得发挥出各个模型的优势,让这些相对较弱的模型(学习器)通…

    2022年4月16日
    124
  • scrapy安装教程_玻璃幕墙安装介绍

    scrapy安装教程_玻璃幕墙安装介绍在写之前我们先来了解一下什么是Scrapy?Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便Scrapy使用了Twisted[‘twɪstɪd](其主要对手是Tornado)异步网络框架来处理网络通讯,可以加快我们的下载速度,不…

    2026年1月18日
    5
  • 抓包工具charles手机代理抓手机包教程

    抓包工具charles手机代理抓手机包教程1、下载charles.zip压缩文件,放在电脑的一个路径下,解压charles.zip文件;2、打开charles文件夹下的charles.exe文件;3、点击工具栏的“Proxy”→“SSLProxyingSettings”→“add”_Host:输入【*】  ; Port:输入【443】→点击“OK”保存,图示如下4、获取IP地址:5、安装证书    ①电脑安装证书  …

    2022年6月5日
    29

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号