npm创建项目

news/2024/10/11 2:31:00

创建项目

  • 创建项目目录
    首先新建一个文件夹,这里存放着我们的项目。
    image

  • 创建项目文件
    这里不使用任何项目模板,相当于使用空模板。
    进入这个文件夹,再cmd中运行npm init
    然后按照提示输入package name,项目名等等。每输入一个就回车。完成之后目录下会出现一个package.json项目文件。
    我们到vscode中打开这个目录
    image

  • 创建项目入口文件
    按照package.json的提示,我们需要创建index.js。一般都是放在src文件夹下。于是我们创建这个路径。
    image
    如果是需要在浏览器中运行项目,可以再创建一个index.html,并添加入口js引用
    image

  • 添加依赖引用
    假如我们的需求是要用jquery操作dom
    添加依赖的方式是命令行中执行npm i jquery。这会将包的引用添加到项目文件

{"name": "npm-project","version": "1.0.0","description": "","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"author": "","license": "ISC","dependencies": {"jquery": "^3.7.1"}
}
  • 使用自定义模块
    添加repeat.js文件
export default{repeat:function(str){return `${str},${str}`}
}

再使用这个模块

import rmodule from "./repeat"
$("body").append($(`<h1 style="color:lightgreen">${rmodule.repeat("Hello jquery")}</h1>`))
  • 使用添加的包
    index.js中使用import导入包,然后使用jquery
import rmodule from "./repeat"
import $ from "jquery"
$("body").append($(`<h1 style="color:lightgreen">${(()=>"Hello jquery")()}</h1>`))
$("body").append($(`<h1 style="color:lightgreen">${rmodule.repeat("Hello jquery")}</h1>`))

由于import $ from "jquery""jquery"不是真实路径,所以还需要编译项目。

编译项目

1.babel编译器

  • 添加编译器
    在命令行中运行npm install -D @babel/core @babel/cli @babel/preset-env,这将会添加一个叫babel的es6编译器到开发时依赖中
{"name": "npm-project","version": "1.0.0","description": "","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"author": "","license": "ISC","devDependencies": {"@babel/cli": "^7.24.5","@babel/core": "^7.24.5","@babel/preset-env": "^7.24.5"},"dependencies": {"jquery": "^3.7.1"}
}
  • 添加编译器的配置文件
    在项目的根目录下创建一个命名为 babel.config.js 的配置文件
const presets = [["@babel/preset-env",{targets: {edge: "17",firefox: "60",chrome: "67",safari: "11.1",},useBuiltIns: "usage",corejs: "3.6.4",},],
];module.exports = { presets };

image

  • 编译项目
    在项目文件中添加此命令"scripts": {"build": "babel src --out-dir lib"}
{"name": "npm-project","version": "1.0.0","description": "","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1","build": "babel src --out-dir lib"},"author": "","license": "ISC","devDependencies": {"@babel/cli": "^7.24.5","@babel/core": "^7.24.5","@babel/preset-env": "^7.24.5"},"dependencies": {"jquery": "^3.7.1"}
}

然后运行此命令npm run build,使用babel编译器,将src目录中的文件编译为es2015,输出到lib目录。
image

  • 评价
    就编译结果看。babel扫描了src目录下的所有js文件,但只进行了源代码编译,和源码的链接。也就说只做了编译器的功能,没有做依赖包的链接的工作。真是服了!

2.使用webpack

为了解决这个问题,我们换成webpack
运行命令npm install -D webpack webpack-cli添加开发时依赖。同时添加pack命令

{"name": "npm-project","version": "1.0.0","description": "","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1","build": "babel src --out-dir lib","pack": "webpack"},"author": "","license": "ISC","devDependencies": {"@babel/cli": "^7.24.5","@babel/core": "^7.24.5","@babel/preset-env": "^7.24.5","webpack": "^5.91.0","webpack-cli": "^5.1.4"},"dependencies": {"jquery": "^3.7.1"}
}
  • 添加webpack配置文件
    在根目录下添加webpack.config.js配置文件
const path=require("path");
module.exports={mode:"development",entry:"./src/index.js",output:{filename:"dist.js",path:path.resolve(__dirname,"dist")}
}
  • 编译
    运行命令npm run pack。根目录下出出现打包的文件。jquery也被连接到了最终的文件中。
    image

运行项目

index.html的js链接换一下

<!DOCTYPE html>
<html><header><title>入口HTML</title></header><!-- <script type="module" src="./src/index.js"></script> --><script type="module" src="./dist/dist.js"></script><body><h1>Hello World</h1></body>
</html>

然后用live server扩展在此文件上运行一个web服务器
image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/27507.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

springboot为什么要用延迟导入?

Spring Boot使用了多种方式来实现自动配置,其中DeferredImportSelector接口是这些机制之一。 DeferredImportSelector是ImportSelector的一个扩展,它允许延迟导入配置类直到所有@Configuration类都被处理完毕。这对于某些自动配置类需要在应用程序上下文的创建过程中的后期阶…

深入学习和理解Django视图层:处理请求与响应

title: 深入学习和理解Django视图层:处理请求与响应 date: 2024/5/4 17:47:55 updated: 2024/5/4 17:47:55 categories:后端开发tags:Django 请求处理 响应生成 模板渲染 表单处理 中间件 异常处理第一章:Django框架概述 1.1 什么是Django? Django是一个高级的Python Web框架…

常见的排序算法

常见的排序算法 目录一、冒泡排序(Bubble Sort)二、插入排序(Insert Sort)三、选择排序 (Selection Sort)四、希尔排序(Shell Sort)五、快速排序(Quick Sort)六、堆排序(Heap Sort)七、归并排序(Merge Sort)八、计数排序(Count Sort()九、桶排序 (Bucket Sort)十、基数排序…

K8S 创建Spring-boot项目并进行项目启动与访问

##Spring-boot 的helloworld 项目package com.example.demo;import java.time.LocalDateTime; import java.time.format.DateTimeFormatter;import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; imp…

狂神spring学习笔记

1. Spring 1. 简介 一个融合器,一个简化开发的框架 spring官网 github地址 2. Maven坐标 <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency><groupId>org.springframework</groupId><artifactId>sp…

2024-05-04 如何为antd的table设置序号

给columns加多一列即可:const columns = [{title: "序号",key: "index",render: (_, record, index) => index + 1,},...]如图:

Multisim14--软件简介及安装教程(内含安装包)

安装包见文章末尾一、软件简介 Multisim是美国国家仪器(NI)有限公司推出的以Windows为基础的仿真工具,适用于板级的模拟/数字电路板的设计工作。它包含了电路原理图的图形输入、电路硬件描述语言输入方式,具有丰富的仿真分析能力。工程师们可以使用Multisim交互式地搭建电路…

随机抽奖

问题:随机抽奖公式 解决1:只一个抽奖结果=INDEX(A:A,RANDBETWEEN(2,11))解决2:多个抽奖结果且不能有重复=TAKE(SORTBY(A2:A11,RANDARRAY(10)),6)将抽奖名单按随机序排序,再提取前六个。