• 微软开源代码编辑器monaco-editor


      

      官网上给出:”The Monaco Editor is the code editor that powers VS Code. A good page describing the code editor's features is here.

      It is licensed under the MIT License and supports IE 9/10/11, Edge, Chrome, Firefox, Safari and Opera.“

          Monaco Editor 展现还是非常牛的,直接上图:

         

          https://microsoft.github.io/monaco-editor/

         下面给出一个入门教程:

         

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <meta http-equiv="X-UA-Compatible" content="IE=edge" />
     5     <meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
     6 </head>
     7 <body>
     8 
     9 <div id="container" style="800px;height:600px;border:1px solid grey"></div>
    10 <div id="container2" style="800px;height:600px;border:1px solid grey"></div>
    11 <script src="min/vs/loader.js"></script>
    12 <script>
    13     require.config({ paths: { 'vs': 'min/vs' }});
    14     require(['vs/editor/editor.main'], function() {
    15         var editor = monaco.editor.create(document.getElementById('container'), {
    16             value: [
    17                 'function x() {',
    18                 '	console.log("Hello world!");',
    19                 '}'
    20             ].join('
    '),
    21             language: 'javascript'
    22         });
    23 
    24          var editor2 = monaco.editor.create(document.getElementById('container2'), {
    25             value: [
    26                 'function x() {',
    27                 '	console.log("Hello world!");',
    28                 '}'
    29             ].join('
    '),
    30             language: 'csharp',
    31             theme:'vs-dark'
    32         });
    33 
    34         
    35     });
    36 
    37     function changeTheme(theme) {
    38         var newTheme = (theme === 1 ? 'vs-dark' : ( theme === 0 ? 'vs' : 'hc-black' ));
    39         if (editor) {
    40             editor.updateOptions({ 'theme' : newTheme });
    41         }
    42         if (diffEditor) {
    43             diffEditor.updateOptions({ 'theme': newTheme });
    44         }
    45     }
    46 </script>
    47 </body>
    48 </html>

    对Javascript语言是有智能提示的,如上图所示。

      1 <!DOCTYPE html>
      2 <html>
      3 <head>
      4     <meta http-equiv="X-UA-Compatible" content="IE=edge" />
      5     <meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
      6 </head>
      7 <body>
      8 
      9 <div id="diff-editor" style="800px;height:600px;border:1px solid grey"></div>
     10     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js" integrity="sha256-wS9gmOZBqsqWxgIVgA8Y9WcQOa7PgSIX+rPA0VL2rbQ=" crossorigin="anonymous"></script>
     11 <script src="min/vs/loader.js"></script>
     12 <script>
     13 
     14 // $(document).ready(function() {
     15 //     require.config({ paths: { 'vs': 'min/vs' }});
     16 //     require(['vs/editor/editor.main'], function() {
     17         
     18 
     19 //          var editor = monaco.editor.create(document.getElementById('container'), {
     20 //             value: [
     21 //                 'function x() {',
     22 //                 '	console.log("Hello world!");',
     23 //                 '}'
     24 //             ].join('
    '),
     25 //             language: 'csharp',
     26 //             theme:'vs-dark'
     27 //         });
     28 
     29         
     30 //     });
     31 
     32 //     window.onresize = function () {
     33 //         if (editor) {
     34 //             editor.layout();
     35 //         }
     36 //         if (diffEditor) {
     37 //             diffEditor.layout();
     38 //         }
     39 //     };
     40 // });
     41 var preloaded = {};
     42 
     43 
     44 function xhr(url, cb) {
     45     if (preloaded[url]) {
     46         return cb(null, preloaded[url]);
     47     }
     48     $.ajax({
     49         type: 'GET',
     50         url: url,
     51         dataType: 'text',
     52         error: function () {
     53             cb(this, null);
     54         }
     55     }).done(function(data) {
     56         cb(null, data);
     57     });
     58 }
     59 function loadDiffSample() {
     60 
     61     var onError = function() {
     62         // $('.loading.diff-editor').fadeOut({ duration: 200 });
     63         // $('#diff-editor').append('<p class="alert alert-error">Failed to load diff editor sample</p>');
     64     };
     65 
     66 
     67 
     68     var lhsData = null, rhsData = null, jsMode = null;
     69 
     70     xhr('txt/diff.lhs.txt', function(err, data) {
     71         if (err) {
     72             return onError();
     73         }
     74         lhsData = data;
     75         onProgress();
     76     })
     77     xhr('txt/diff.rhs.txt', function(err, data) {
     78         if (err) {
     79             return onError();
     80         }
     81         rhsData = data;
     82         onProgress();
     83     })
     84 
     85     function onProgress() {
     86         if (lhsData && rhsData) {
     87             require.config({ paths: { 'vs': 'min/vs' }});
     88             require(['vs/editor/editor.main'], function() {
     89                 diffEditor = monaco.editor.createDiffEditor(document.getElementById('diff-editor'), {
     90                     enableSplitViewResizing: false
     91                 });
     92 
     93                 var lhsModel = monaco.editor.createModel(lhsData, 'text/javascript');
     94                 var rhsModel = monaco.editor.createModel(rhsData, 'text/javascript');
     95 
     96                 diffEditor.setModel({
     97                     original: lhsModel,
     98                     modified: rhsModel
     99                 });
    100             });
    101             //$('.loading.diff-editor').fadeOut({ duration: 300 });
    102         }
    103     }
    104 }
    105     function changeTheme(theme) {
    106         var newTheme = (theme === 1 ? 'vs-dark' : ( theme === 0 ? 'vs' : 'hc-black' ));
    107         if (editor) {
    108             editor.updateOptions({ 'theme' : newTheme });
    109         }
    110         if (diffEditor) {
    111             diffEditor.updateOptions({ 'theme': newTheme });
    112         }
    113     }
    114 
    115     loadDiffSample();
    116 </script>
    117 </body>
    118 </html>

  • 相关阅读:
    浅谈《倒退的历史——某MIS项目手记(1):“切五花肉”式的分工 》
    使用SMO备份SQLServer2005数据库
    在.NET 2.0中,让你的组件也可以绑定
    URL 正则表达式,全【转】
    WinForm 自定义控件属性
    C# WebBrowser 中删除 HtmlElement
    C# C# WinForm控件美化扩展系列之ImageComboBox
    C# 处理无边框窗体
    【唠叨两句】Event and delegate
    与 “关闭窗体” 相关的一些零散知识
  • 原文地址:https://www.cnblogs.com/isaboy/p/monaco-editor.html
Copyright © 2020-2023  润新知