首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

继往开来的 sass 3 代编译器:ruby sass、node-sass、dart-sass

less、stylus 的编译器都是 js 写的,而 sass 就比较特殊了,3 代编译器都不是 js 写的。 今天,我们就来聊下 sass 的历史:sass 的 3 代编译器。...只不过,node-sass 因为是一个 c++ 模块,所以安装的时候要和 node 版本对应,不然就会编译报错,这点比较麻烦。...dart-sass 代表着未来,也是被官方推荐的 sass 编译器。...三代 sass 编译器 介绍完了三代编译器,我们来简单做下回顾: ruby sass 是最早的 sass 编译器,用 ruby 写的,所以不能被 node 调用,但是它是开创者,历史功绩列第一位。...less、stylus 的编译器都是 js 写的,最特殊的是 sass,它的三代编译器分别是 ruby、c++、dart 写的,都不是 js。

1.5K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JS框架设计之加载器所在路径的探知一模块加载系统

    1、要加载一个模块,我们需要一个URL作为加载地址,一个script作为加载媒介,但用户在require是都用ID,我们需要一个将ID转换为URL的方法,思路很简单,强加个约定,URL的合成规则是为:...basepath+模块ID+".js" 2、当浏览器自上而下分析DOM,在浏览器解析我们的Javascript文件时(指的是加载器文件)时,他就肯定是DOM树最后一个加入的script标签,因此有下面的方法...script标签对象,也就是加载器 var src=document.querySelector?...此标志不适用于事件属性。 4 将属性值作为完全展开的网址返回。仅适用于网址属性。...的路径 zcLoadJs为我的加载器,里面执行getBasePath()方法,预期得到zcLoadJs.js的服务器路径,但是在IE678中却返回juqery.js的路径,这个不奇怪,很多的常规方法在IE

    1K50

    Webpack 加载模块的规则

    Webpack 支持 CommonJS 规范 定义的加载规则。 加载规则 路径以 . 或 .. 打头,加载相对路径的模块。. 表示当前目录,.. 表示上层目录。 require('..../foo.js') 将加载当前文件所在目录的 foo.js 的文件。 路径以 / 打头,加载绝对路径的模块。...如 require('/xx/foo.js') 将加载文件路径是 /xx/foo.js 的文件。不建议用这种模式来加载模块。 路径不以上面的内容打头。则会这样查找: Node.js 的原生模块。...(注:在浏览器环境中不存在这些模块。) 在 Webpack 中的配置的目录或模块的别名。 当前文件目录的 node_modules。 上层目录的 node_modules。...补文件拓展名 如果加载的路径不带文件拓展名,会尝试补 .js, .json 等文件拓展名。在 Webpack 中可配置会尝试补的拓展名。

    1.4K30

    Python 模块的加载顺序

    absolute path:绝对路径,全路径2.Python 解释器是如何查找包和模块的Python 执行一个 py 文件,无论执行的方式是用绝对路径还是相对路径,interpreter 都会把文件所在的...:解释器会默认加载一些 modules,除了sys.builtin_module_names 列出的内置模块之外,还会加载其他一些标准库,都存放在sys.modules字典中。...只是 Python 解释器启动时就加载到了 sys.modules中缓存起来了。所以,即使在同目录下有同名模块,解释器依然是可以找到正确的 os 模块的!...同时发现,模块被加载的时候,其中非函数或类的语句,例如 print('hello')、name=michael等,是会在 import的时候,默认就执行了。...8.总结Python 通过查找 sys.path 来决定包的导入,Python解释器启动时加载的模块缓存 > 同级目录 > sys.path1:。

    11610

    JavaScript 模块的循环加载

    但是实际上,这是很难避免的,尤其是依赖关系复杂的大项目,很容易出现a依赖b,b依赖c,c又依赖a这样的情况。这意味着,模块加载机制必须考虑"循环加载"的情况。...一、CommonJS模块的加载原理 介绍ES6如何处理"循环加载"之前,先介绍目前最流行的CommonJS模块格式的加载原理。 CommonJS的一个模块,就是一个脚本文件。...二、CommonJS模块的循环加载 CommonJS模块的重要特性是加载时执行,即脚本代码在require的时候,就会全部执行。...exports.done = true; 三、ES6模块的循环加载 ES6模块的运行机制与CommonJS不一样,它遇到模块加载命令import时,不会去执行模块,而是只生成一个引用。...我们再来看ES6模块加载器SystemJS给出的一个例子。 // even.js import { odd } from '.

    1.4K50

    读懂CommonJS的模块加载

    CommonJS定义了两个主要概念: require函数,用于导入模块 module.exports变量,用于导出模块 然而这两个关键字,浏览器都不支持,所以我认为这是为什么浏览器不支持CommonJS...那么CommonJS可以用于那些方面呢?虽然CommonJS不能再浏览器中直接使用,但是nodejs可以基于CommonJS规范而实现的,亲儿子的感觉。...NativeModule原生代码关键代码,这一块用于封装模块的。...CommonJs模块和ES6模块的区别 使用场景 CommonJS因为关键字的局限性,因此大多用于服务器端。...而ES6的模块加载,已经有浏览器支持了这个特性,因此ES6可以用于浏览器,如果遇到不支持ES6语法的浏览器,可以选择转译成ES5。

    1.3K30

    如何实现一个异步模块加载器

    今天就结合模块,和大家讲分享一下:如何实现一个简单的模块加载器。 正文 最近参考 require.js 的API,自己动手实现了一个简单的异步模块加载器: fake-requirejs。...因为这有助于我集中有限的精力研究模块化这一个概念,所以后来决定实现requirejs,这是一个相对来说比较简单的异步模块加载器。...所以: 作为一个合格的模块加载器,必须解决循环依赖的问题。 那么,让我们先来看看别人是怎么处理的吧。...那么问题来了: 在原先的设计中, 每一个define是跟一个模块一一对应的,require只能用一次,用于主入口模块(如:main.js)的加载。...至此,我发现require不应该仅仅是用于主入口模块的加载,require应该对应更高层次的抽象概念:我将它命名为:任务(Task),这是一个有别于Module的新的类。

    62820

    struct模块(用于对象的压缩)

    6.27自我总结 struct模块 1.struct模块中的函数 函数 return explain pack(fmt,v1,v2…) string 按照给定的格式(fmt),把数据转换成字符串(字节流...(buffer为可写的缓冲区,可用array模块) unpack(fmt,v1,v2…..) tuple 按照给定的格式(fmt)解析字节流,并返回解析结果 pack_from(fmt,buffer,offset...) tuple 按照给定的格式(fmt)解析以offset开始的缓冲区,并返回解析结果 calcsize(fmt) size of fmt 计算给定的格式(fmt)占用多少字节的内存,注意对齐方式 2....压缩 压缩后的内容 = struct.pack(格式,被压缩的内容) 3.解压 解压被压缩的内容 = struct.unpack(格式,压缩后的内容) 4.格式 格式符 C语言类型 Python类型...char[] string p char[] string P void * long 5.注意 _Bool在C99中定义,如果没有这个类型,则将这个类型视为char,一个字节; q和Q只适用于

    75230

    类加载器的方法_JS加载器

    ==c2); // true 同一个类加载器器,加载同名的类,第一次加载时加载的类会缓存到类加载器的缓存,再次加载直接在缓存读取,两次加载的是同一个类 //直接获取类的类加载器...} } 在应用程序中,默认我们获取上下文类加载器、类型对象getClassLoader都是采用的同一个应用程序类加载器,类在第一次被加载后会缓存到类加载器的缓存中,由于是同一个类加载器此时同名的类不能被多次加载...,且应用程序类加载器只能加载classpath下的类。...如果我们想加载自定义路径下的类,需要用到自定义类加载器,可以去指定路径下加载类,且通过创建多个类加载器对象,加载的同名类相互隔离,也就是说同名类可以被多个自定义类加载器对象加载。...,第二次是在类加载器的缓存加载的 结果两次加载的是同一个 c1.newInstance(); //会初始化 c2.newInstance(); //不会初始化

    5.9K10

    猿创征文|类加载器&反射&模块化

    1.2.2JVM的类加载机制 全盘负责:就是当一个类加载器负责加载某个Class时,该Class所依赖的和引用的其他Class也将由该类加载器负责载入,除非显示使用另外一个类加载器来载入 父类委托:就是当一个类加载器负责加载某个...Class时,先让父类加载器试图加载该Class,只有在父类加载器无法加载该类时才尝试从自己的类路径中加载该类 缓存机制:保证所有加载过的Class都会被缓存,当程序需要使用某个Class对象时,类加载器先从缓存区中搜索该...系统类加载器通常用于定义应用程序类路径,模块路径和JDK特定工具上的类 类加载器的继承关系:System的父加载器为Platform,而Platform的父加载器为Bootstrap 1.2.4ClassLoader...中的两个方法 方法分类 方法名 说明 static ClassLoader getSystemClassLoader() 返回用于委派的系统类加载器 ClassLoader getParent() 返回父类加载器进行委派...public static void main(String[] args) { //static ClassLoader getSystemClassLoader():返回用于委派的系统类加载器

    35220

    动手实现一个AMD模块加载器(一)

    该process对象有用的主要属性有 execPath:表示可执行文件的绝对路径 version:Node.js的版本号 versions:Node.js各种依赖的版本,是一个对象,包括node、v8...另外process的stdin属性作为标准的输入流,默认情况下是暂停的,使用process.stdin.resume()方法恢复,如下就是一个简单的命令行交互界面: process.stdin.resume...一个Node.js进程的主要方法有以下方法: process.memoryUsage():用于获取运行Node.js应用的进程的内存使用量,返回一个对象 rss:整数,进程的内存消耗量,单位是字节 heapTotal...process.chdir():用于改变Node.js的工作目录,参数为一个路径,可以是相对,也可以是绝对 process.cwd():用于获取当前的工作目录, console.log('directory...process.exit():用于退出进程,可提供一个整数作为退出代码,默认为0 process.kill(pid,[signall]):向另一个进程发送信号,如果不指定sinall,则说明是终止该进程

    94520

    动手实现一个AMD模块加载器(二)

    在上一篇文章中,我们已经基本完成了模块加载器的基本功能,接下来来完成一下路径解析的问题。...在之前的功能中,我们所有的模块默认只能放在同级目录下,而在实际项目中,我们的js很有可能位于多个目录,甚至是CDN中,所以现在这种路径解析是非常不合理的,因此我们需要将每个模块的name转化为一个绝对路径...我们再优化一下,我们完全可以在define中将name替换为一个绝对路径,同时在主模块加载依赖的时候,将依赖替换为绝对路径即可,因此我们可以在定义模块的时候就将这个这个路径替换好。...不过这个时候我们需要明白的是,在定义模块的时候是一个类似单词,而声明依赖的时候则有可能含有路径,如何在模块声明的时候正确解析路径呢?...那么我们就应该在use方法加载模块的时候将这些变量名添加到这个变量名之下,之后再define中进行转化,那么最后我们的整个代码如下: (function(root){ var modMap = {}

    66220

    动手实现一个AMD模块加载器(三)

    在上一篇文章中,我们的AMD模块加载器基本已经能够使用了,但是还不够,因为我们没有允许匿名模块,以及没有依赖等情况。...实际上在amd的规范中规定的就是define函数的前两个参数是可选的,当没有id(模块名)的时候也就意味着不会有模块依赖于这个模块。...,我们将匿名模块的name修改为了null,而后面有一个replaceName方法是做name替换的,这里没有判断name是否为null的情况,因此需要在开头做一次判断,增加如下代码: function...此时我们的一个简单的amd模块加载器就这样写完了,删除console增加注释就可以比较好的使用了,最后整理一下代码如下: (function(root){ var modMap = {}; var...arguments, 0)); }) }); } else if(modMap[name].status === 'loading') { // 模块正在加载

    39420

    用于 DLE 的统计模块“LightStat”3.0

    https://www.pandoge.com/moduli-i-skripty/modul-statistiki-lightstat-30-dlya-dle此文只为记录自己编译过程中一些心得和记录 图片 模块功能...: 无需重新加载页面即可自动刷新数据。...与 2.0 版本相比,搜索机器人的基础得到了扩展,这使得统计数据更加准确。 用于深色和浅色网站设计的两个小部件主题。深色主题默认开启。 仅计算活跃访问者。...用于标记站点上具有特殊权限的管理员和组的有用功能。 修复了之前版本中发现的模块工作和布局中的一些不准确之处。 安装模块: 如果您之前使用过2.0版本的模块,那么第一步应该跳过。...如果您是第一次使用该模块,请对您的数据库进行以下 SQL 查询: CREATE TABLE `您的数据库名称`.

    26530
    领券